0

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

请查看以下 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,但它仍然说找不到!我不明白出了什么问题!有什么见解吗?

4

1 回答 1

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

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

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

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

于 2012-04-25T17:45:37.463 回答