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(まだ空の) 配列エントリの を参照するため、元の行により、シェルは を実行しようとし="$(cksum $files)"ます。

于 2012-04-25T17:45:37.463 に答える