それ[] && cmd
はif .. fi
建設と同じではないことに注意してください。
ときどきその動作はかなり似ており、の[] && cmd
代わりに使用できますif .. fi
。しかし、たまにしか。if条件がある場合に実行するコマンドが複数ある場合、またはif .. else .. fi
ロジックに注意を払う必要がある場合。
いくつかの例:
[ -z "$VAR" ] && ls file || echo wiiii
とは異なります
if [ -z $VAR ] ; then
ls file
else
echo wiii
fi
ls
が失敗した場合、echo
実行されるため、では発生しませんif
。
もう一つの例:
[ -z "$VAR" ] && ls file && echo wiii
とは異なります
if [ -z "$VAR" ] ; then
ls file
echo $wiii
fi
この構造は同じように機能しますが
[ -z "$VAR" ] && { ls file ; echo wiii ; }
;
エコーが重要であり、エコーが存在する必要があることに注意してください。
したがって、上記のステートメントを再開すると言うことができます
[] && cmd
==最初のコマンドが成功した場合、次のコマンドを実行します
if .. fi
== if条件(テストコマンドでもある可能性があります)の場合、コマンドを実行します
間の移植のためにそう[
して[[
の使用[
のみ。
if
POSIX互換です。ですから、の間で選択する必要がある場合[
やif
、あなたのタスクと予想される動作を見て選択します。
[ … ]
対[[ … ]]
対test …
、でより完全な答えがある。この大部分は重複質問が。