Здесь показаны различия между двумя версиями данной страницы.
|
linux:bash-for [2016/08/08 06:30] |
linux:bash-for [2021/02/11 09:20] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ===== Цикл for на bash, обработка массивов и выводов команд ===== | ||
| + | Синтаксис общий: | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | $f="0 1 2 3 4" | ||
| + | for i in $f | ||
| + | do | ||
| + | echo "$i" | ||
| + | done | ||
| + | </code> | ||
| + | Можно подставлять вывод команды (например, однострочного ls). Тогда for будет перебирать элементы вывода: | ||
| + | <code bash> | ||
| + | lst=`ls -h -l` | ||
| + | for n in $lst | ||
| + | do | ||
| + | echo '=='$n'==' | ||
| + | done | ||
| + | </code> | ||
| + | Если есть объявленный мвссив, например | ||
| + | <code bash> | ||
| + | str=('st1' 'st2' 'st3') | ||
| + | </code> | ||
| + | То его не перебрать предыдущим варинтом, нужна конструкция | ||
| + | <code bash> | ||
| + | for m in "${str[@]}" | ||
| + | do | ||
| + | echo $m | ||
| + | done | ||
| + | </code> | ||
| + | <WRAP center round tip 90%> | ||
| + | Обратите внимание, при объявлении массива - его элементы записываются через пробел! | ||
| + | </WRAP> | ||
| + | |||
| + | === Ссылки === | ||
| + | * http://wiki.dieg.info/bash | ||