それ[] && 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条件(テストコマンドでもある可能性があります)の場合、コマンドを実行します
間の移植のためにそう[して[[の使用[のみ。
ifPOSIX互換です。ですから、の間で選択する必要がある場合[やif、あなたのタスクと予想される動作を見て選択します。
               
              
[ … ]対[[ … ]]対test …、でより完全な答えがある。この大部分は重複質問が。