2012-04-25 7 views
0

ループ内の変数に値を代入しようとすると問題が発生します。それは変数の中で変数を使うようなものです。だから、値を追加するための配列を作成しました。KornShell経由でforループ内の変数に値を代入する

次Kornシェル(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[@]} 
I台無しでし


$ ./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 

OUTPUTがファイルがある場合は私に知らせてくださいとそれはcksumを行ったが、それでもそれは見つからないと言います!私は何が間違っているのか理解できません!どんな洞察?

答えて

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

これは、あなたが望むものをほぼ確実ではありません。試す:

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

${array[index]}="$(cksum $files)"を実行しようとしている(まだ空の)アレイエントリので、元のラインシェルで 結果のvalueを指します。

+0

+1また、 'a = $ 1 + 1'を' let a + = 1'に変更します –

関連する問題