尝试在循环中为变量分配值时遇到问题。就像在变量内部使用变量一样。所以我创建了一个数组来添加值,但仍然有些不正确。
[请看下面的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,但是仍然显示未找到!我不明白什么是错!有见识吗?
${values[$a]}="$(cksum $files)"
几乎可以肯定这不是您想要的。试试:
values[$a]="$(cksum $files)"
${array[index]}
表示(仍然为空)数组条目的value
,因此原始行导致shell尝试执行="$(cksum $files)"
。