Здесь показаны различия между двумя версиями данной страницы.
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 |