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
コマンドを角かっこ内に入れないでください。成功した場合(つまり、失敗するまで)繰り返すには、
grep
次の手順を実行します。while grep ... do ︙ done
grep
失敗した場合(つまり、成功するまで)繰り返すには、次のようにします。while ! grep ... do ︙ done
!
およびコマンド(たとえば、1つ以上のスペースおよび/またはタブ)。"$path"
妥当な理由がなく、実行している操作がわからない限り、常にシェル変数参照(例:)を引用する必要があります。それに比べて校正装置は重要だが、 引用符ほど重要ではありません。したがって、 and で十分です("$text"
この場合は and を"$path"
使用する必要はありません"${text}"
)。"${path}"
...次のように
path
設定されていない場合リストファイル名、この場合参照 bash / POSIXシェルで変数を参照することを忘れたことがセキュリティに与える影響 - しかし、もし...?;
行の末尾にセミコロン()は必要ありませんwhile
(do
その後にセミコロンを追加しない限り)。つまり、while
lineとtheはdo
セミコロンで区切る必要があります。そして/または1 つ以上の改行文字です。