2017-03-02 27 views
4

私はwhileループで配列を取得しようとしているので、配列の値も更新する必要があります。"[0:コマンドが見つかりません" Bashで

以下は私の試みたコードです。このエラーが発生する[0: command not found

#!/bin/bash 
i=0 
while [$i -le "{#myarray[@]}" ] 
do 
    echo "Welcome $i times" 
    i= $(($i+1))) 
done 

私はすべての助けと感謝の前に感謝します!

+0

私はグレッグのウィキbashを学習に非常に有用であることが判明:http://mywiki.wooledge.org/BashGuide/TestsAndConditionals – kalaracey

答えて

8

[の後に空白が必要で、割り当てに=の前後にスペースが必要です。 $(($i+1)))((...))式の出力を実行しようとしますが、あなたが望むものではないと確信しています。また、配列名の前に$がありません。

これらの事を修正して、あなたのwhileループは次のようになります。

#!/bin/bash 
i=0 
while [ "$i" -le "${#myarray[@]}" ] 
do 
    echo "Welcome $i times" 
    i=$((i + 1)) 
done 
  • i=$((i + 1))はまた、[ ... ]
  • チェックの内側に二重引用符内の変数を囲むために常により良いです((i++))
  • のように記述することができますあなたのスクリプトshellcheckを介して - ほとんどの基本的な問題をキャッチすることができます

も参照してください:

+1

iffy質問への偉大な答え(あなたが指摘しているように、複数のダブに分割するのに十分広いエド)。 –

関連する問題