whileループでコマンド不正を使用するためにシェルスクリプトでgrepを使用する方法は?

whileループでコマンド不正を使用するためにシェルスクリプトでgrepを使用する方法は?

whileループとgrepを同時に使用する方法はありますか?私の例を見てください:

while  [[  !(grep -R -h "${text}" ${path}) ]];
do
    ...
done

それは言う:

./test_script.sh: line 1: conditional binary operator expected
./test_script.sh: line 1: expected `)'
./test_script.sh: line 1: syntax error near `-R'
./test_script.sh: line 1: `while  [[  !(grep -R -h "${text}" ${path}) ]];'

ベストアンサー1

  1. コマンドを角かっこ内に入れないでください。成功した場合(つまり、失敗するまで)繰り返すには、grep次の手順を実行します。

    while grep ...
    do
    done
    
  2. grep失敗した場合(つまり、成功するまで)繰り返すには、次のようにします。

    while ! grep ...
    do
    done
    

    !およびコマンド(たとえば、1つ以上のスペースおよび/またはタブ)。

  3. "$path"妥当な理由がなく、実行している操作がわからない限り、常にシェル変数参照(例:)を引用する必要があります。それに比べて校正装置は重要だが、 引用符ほど重要ではありません。したがって、 and で十分です("$text"この場合は and を"$path"使用する必要はありません"${text}")。"${path}"

    ...次のようにpath設定されていない場合リストファイル名、この場合参照 bash / POSIXシェルで変数を参照することを忘れたことがセキュリティに与える影響 - しかし、もし...?

  4. ;行の末尾にセミコロン()は必要ありませんwhiledoその後にセミコロンを追加しない限り)。つまり、whilelineとtheはdoセミコロンで区切る必要があります。そして/または1 つ以上の改行文字です。

おすすめ記事