1. ホーム
  2. bash

[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].

2022-02-28 16:01:40

質問

whileループで配列を取得しようとしているのですが、配列の値も更新する必要があります。

以下は、私が試したコードです。私はこのエラーを取得します。 [0: command not found

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

どうすれば直るの?

どのように解決するのですか?

の後にスペースが必要です。 [ の前後にはスペースを入れません。 = を指定します。 $(($i+1))) の出力を実行しようとします。 ((...)) という表現がありますが、それはきっとあなたが望んでいることではありません。また $ を配列名の前に置いてください。

これらを修正すると、whileループは次のようになります。

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

  • i=$((i + 1)) は次のように書くこともできます。 ((i++))
  • の中で変数を二重引用符で囲むとよいでしょう。 [ ... ]
  • でスクリプトを確認します。 シェルチェック - ほとんどの基本的な問題はここで解決できます。

こちらもご覧ください。