通常、if ステートメントでは角括弧を使用します。
if [ "$name" = 'Bob' ]; then ...
しかし、成功したかどうかを確認するときは、grep
角括弧を使用しません。
if grep -q "$text" $file ; then ...
文中で角括弧が必要なのはいつですかif
?
ベストアンサー1
角括弧はコマンドの同義語ですtest
。if
ステートメントは、どの分岐を取るかを決定するためにコマンドの終了ステータスをチェックします。grep -q "$text"
はコマンドですが、"$name" = 'Bob'
ではなく、単なる式です。test
は式を受け取って評価するコマンドです。
if test "$name" = 'Bob'; then ...
角括弧はコマンドの同義語なのでtest
、元のステートメントのように書き直すことができます。
if [ "$name" = 'Bob' ]; then ...