【发布时间】:2014-08-29 13:58:30
【问题描述】:
我在 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] 等而不是人名,人名,人名等。
【问题讨论】:
-
这里
local关键字的作用是什么? -
在函数内部
-
我以前没见过这种用法。它将整个数组变成局部变量吗?或者只是这个条目?这个语法有参考吗?
-
把它拿出来有用吗?
-
无关提示:由于数组索引是在算术上下文中计算的,因此您可以将
count"inline" 与local OUTFILE[count++]="$i"递增。
标签: arrays linux bash shell for-loop