2012-04-25 96 views
0

我在嘗試爲循環中的變量賦值時遇到了問題。這將像在變量中使用變量。所以我創建了一個數組來添加值仍然是不對的。通過KornShell爲for循環中的變量分配值

請看看下面的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
${values[$a]}="$(cksum $files)" 

這是幾乎可以肯定不是你想要的。嘗試:

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

${array[index]}指(仍然爲空)數組項的value,所以原線 導致外殼試圖執行="$(cksum $files)"

+0

+1也將'a = $ 1 + 1'改爲'let a + = 1' – 2012-04-25 18:48:53