繁体   English   中英

For循环中的奇怪Bash变量分配行为

[英]Strange Bash Variable Assignment Behaviour in 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]等,而不是个人名称,个人名称,个人名称等。

听起来您正在写类似

echo $OUTFILE[$count]

你什么时候应该写

echo ${OUTFILE[$count]}

要将一个数组复制到另一个BASH数组中,您不需要循环,您可以执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM