在Korn Shell的for循环中为变量赋值

时间:2012-04-25 17:35:45

标签: linux shell unix variables ksh

我在尝试为循环中的变量赋值时遇到问题。这就像在变量中使用变量一样。所以我创建了一个数组来添加值仍然是不对的。

请查看以下KornShell(ksh)脚本,让我知道我在哪里搞砸了

#!/usr/bin/ksh
set -A array $1 $2 $3
set -A values
typeset -i a

a=0;
for files in ${array[@]}
do
cd ~/shell_lib
ls | grep $files
${values[$a]}="$(cksum $files)" 
a=$a+1
done

echo ${values[@]}

输出


$ ./intarray.sh forall.sh name.sh 
forall.sh
./intarray.sh[12]: =3311936491 251 forall.sh:  not found
name.sh
./intarray.sh[12]: =3294813710 338 name.sh:  not found

该文件在那里,它已经完成了cksum,但仍然说它没找到!我无法理解有什么不对!有什么见解吗?

1 个答案:

答案 0 :(得分:1)

${values[$a]}="$(cksum $files)"

这几乎肯定不是你想要的。尝试:

values[$a]="$(cksum $files)" 

${array[index]}指的是(仍为空)数组条目的value,因此是原始行 导致shell尝试执行="$(cksum $files)"