所以我有一些看起来像这样的东西:
a=1
declare -a array
cat ~file | while read line
do
array[$a]=$line
let a=$a+1
echo ${array[(($a - 1))]}
done
read n
m=$n
echo ${array[$m]}
当我在循环中回显数组时,它可以工作,但是当我尝试在循环之外引用它时,它不起作用。有人可以告诉我为什么吗?第二个echo不返回数组的值。
答案 0 :(得分:0)
这是因为数据存储在子shell中,就像执行cat ~file | while ...
一样。
要防止它,请执行:while do ... done < file
。另请注意,您可以使用简单的$((a+1))
甚至$((a ++))
来增加:
a=1
declare -a array
while read line
do
array[$a]=$line
$((a+1))
echo ${array[(($a - 1))]}
done < ~file