2016-07-15 16 views
1

ここでは引用符が必要なスタックオーバーフローについて読みましたが、引用符を追加しましたが、それは助けになりませんでした。整数式が必要です:Bash

array_length=${fileNames[@]} 

COUNTER=0 

while [ "$COUNTER" -lt "$array_length" ]; do 

エラーが発生します。助けてください。

+0

前の質問のあなたの言及は、文脈を助けるためのリンク(あなたは質問を編集し、それを修正することができます。しかし、あなたが示している短い部分を見るだけで、ファイル名のリストに 'array_length'という変数を設定してから、それを数字として使うことができます。 'fileNames'に要素が1つしかない場合(' [0] 'を使用していない場合)、それが数値である場合、testの呼び出しはうまく動作しません。 – MAP

+0

申し訳ありませんが、私はもう一度それを見つけようとします。私はそれを閉じたので私を助けなかった。 –

+0

[bash arrays](http://tldp.org/LDP/abs/html/arrays.html) –

答えて

6
array_length=${fileNames[@]} 

が予想される動作については

array_length=${#fileNames[@]} 

されている必要がありますbashに完全に新しい、あなたのwhileループは次のようになります。#とそれを前に置くながら

while [ "$COUNTER" -lt "$array_length" ] 
do 
. 
#do something 
. 
((COUNTER++)) # Equivalent to COUNTER=COUNTER+1 
done 

${fileNames[@]}は、配列全体に展開しますあなたに要素の数を与えます。


Sidenotes

1.しばらくループ内COUNTERをインクリメントすることを忘れないでください。
2.通常はシステム用に予約されているCOUNTERのような大文字の変数を避けてください。

+0

を参照してくださいありがとう、私は5分でそれを受け入れます。 "$ COUNTER + 1" -lt "$ array_length" これはまだ何か大きなコンセプトがあれば、私は新しい質問を開きますが、これはエラーを返します。 –

+0

@BhavyaArora: 'counter + 1'は' counter'をインクリメントしません。 – sjsam

+0

私はここでそれを増やしたくない、ちょうど次の数字とそれを比較したい。エラーを取り除くにはどうしたらいいですか?また、カウンターを増やすには? let counter = counter + 1? –

関連する問題