我在尝试为循环中的变量赋值时遇到问题。这就像在变量中使用变量一样。所以我创建了一个数组来添加值仍然是不对的。
请查看以下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,但仍然说它没找到!我无法理解有什么不对!有什么见解吗?
答案 0 :(得分:1)
${values[$a]}="$(cksum $files)"
这几乎肯定不是你想要的。尝试:
values[$a]="$(cksum $files)"
${array[index]}
指的是(仍为空)数组条目的value
,因此是原始行
导致shell尝试执行="$(cksum $files)"
。