我在for循环中分配一个变量,我从提供的输入中创建一个输出文件名。
我之前从未遇到任何数组或for循环的问题,但行为非常奇怪。我在代码中的其他地方使用了类似的for循环,这些循环都运行良好。下面的代码工作正常,变量按预期分配。
count=1
for i in "${INPUT[@]}"
do
local INPUT[$count]=`echo -n "$i" | sed 's/\(.\)/\1\n/g'`
let count=count+1
done
这一切都按预期工作,但是,下面的代码不起作用。
count=1
for i in "${INPUT[@]}"
do
local OUTFILE[$count]="$i"
let count=count+1
done
如果我回显$ INPUT [$ count]或$ i的值,我得到了我的预期结果,但是,当我在赋值后回显$ OUTFILE [$ count]的值时,它出现为[1] ,[2],[3]等,而不是人的姓名,人名,人名等。
答案 0 :(得分:4)
听起来你正在编写像
这样的东西echo $OUTFILE[$count]
当你应该写作
echo ${OUTFILE[$count]}
答案 1 :(得分:2)
要将数组复制到另一个BASH数组中,您不需要循环,您可以这样做:
OUTFILE=( "${INPUT[@]}" )