Значение массива Bash отличается внутри цикла whileLinux

Ответить
Anonymous
 Значение массива Bash отличается внутри цикла while

Сообщение Anonymous »

У меня есть довольно простой сценарий оболочки, который использует цикл while для чтения значений из файла, помещения их в массив и последующей печати содержимого массива. Он правильно отображает содержимое массива после каждого добавления внутри цикла while. Проблема в том, что когда я просматриваю содержимое массива вне цикла, таблица кажется пустой.
Вот содержимое скрипта:

Код: Выделить всё

ctr=0
arr=()
cat "alpha.txt" |\
while IFS="," read data
do
arr+=("$data")
echo "$ctr.data: $data"
echo "array inside loop: ${arr[@]}"
let "ctr=ctr+1"
done
echo
echo "+++++"
echo "array outside loop: ${arr[@]}"
echo
echo "${arr[1]}"
echo "${arr[2]}"
Содержимое файла Alpha.txt:

Код: Выделить всё

aaa
bbb
ccc
Выход программы:

Код: Выделить всё

0.data: aaa
array inside loop: aaa
1.data: bbb
array inside loop: aaa bbb
2.data: ccc
array inside loop: aaa bbb ccc

+++++
array outside loop:
Я не понимаю, почему я не могу отобразить содержимое массива вне цикла. Буду рад любым советам.

Подробнее здесь: https://stackoverflow.com/questions/791 ... while-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»