Цикл for на bash, обработка массивов и выводов команд

Синтаксис общий:

#!/bin/bash
$f="0 1 2 3 4"
for i in $f
do
  echo "$i"
done

Можно подставлять вывод команды (например, однострочного ls). Тогда for будет перебирать элементы вывода:

lst=`ls -h -l`

for n in $lst
do
echo '=='$n'=='
done

Если есть объявленный мвссив, например

str=('st1' 'st2' 'st3')

То его не перебрать предыдущим варинтом, нужна конструкция

for m in "${str[@]}"
do
   echo $m
done

Обратите внимание, при объявлении массива - его элементы записываются через пробел!

Ссылки