Имеем код:
unset list
while read line; do
list+=("$line")
echo "${#list[@]}"
done
echo "${#list[@]}"
/dev/stdin
.Казалось бы (отличие от предыдущего кода на второй строке):
unset list
cat /dev/stdin | while read line; do
list+=("$line")
echo "${#list[@]}"
done
echo "${#list[@]}"
Авотнет, результат — ноль. Что характерно, echo "${#list[@]}"
в цикле показывает предполагаемо-правильную длину.
Т. е. мы получаем массив с ожидаемым содержимым в первом случае, но не получаем его во втором. Почему так?