Ответ 1
Он поддерживает списки, но не как отдельную структуру данных (игнорируя массивы на данный момент).
Цикл for
выполняет итерацию по списку (в общем смысле) значений, разделенных белым пространством, независимо от того, как создается этот список, буквально:
for i in 1 2 3; do
echo "$i"
done
или через расширение параметра:
listVar="1 2 3"
for i in $listVar; do
echo "$i"
done
или подстановка команды:
for i in $(echo 1; echo 2; echo 3); do
echo "$i"
done
Массив - это просто специальный параметр, который может содержать более структурированный список значений, где каждый элемент может содержать пробелы. Сравните разницу:
array=("item 1" "item 2" "item 3")
for i in "${array[@]}"; do # The quotes are necessary here
echo "$i"
done
list='"item 1" "item 2" "item 3"'
for i in $list; do
echo $i
done
for i in "$list"; do
echo $i
done
for i in ${array[@]}; do
echo $i
done