我有一个非常简单的 shell 脚本,它使用 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:
我不明白为什么我无法在循环之外显示数组的内容。如能提供任何建议我将不胜感激。
解决方案如下:
以及为什么这是解决方案:
因为管道会生成子 shell,这意味着管道中生成的变量不会被脚本看到