For循环中的奇怪Bash变量赋值行为

时间:2014-08-29 13:58:30

标签: arrays linux bash shell for-loop

我在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]等,而不是人的姓名,人名,人名等。

2 个答案:

答案 0 :(得分:4)

听起来你正在编写像

这样的东西
echo $OUTFILE[$count]

当你应该写作

echo ${OUTFILE[$count]}

答案 1 :(得分:2)

要将数组复制到另一个BASH数组中,您不需要循环,您可以这样做:

OUTFILE=( "${INPUT[@]}" )