私は通常;
、1行に複数のコマンドを組み合わせるために使用しますが、一部の人はを好み&&
ます。違いはありますか?例えば、cd ~; cd -
およびcd ~ && cd -
同じものを作るようです。より移植性の高いバージョンはどれですか。たとえば、Androidのシェルなどのbashサブセットでサポートされますか?
私は通常;
、1行に複数のコマンドを組み合わせるために使用しますが、一部の人はを好み&&
ます。違いはありますか?例えば、cd ~; cd -
およびcd ~ && cd -
同じものを作るようです。より移植性の高いバージョンはどれですか。たとえば、Androidのシェルなどのbashサブセットでサポートされますか?
回答:
前のコマンドが;
2番目のコマンドで失敗した場合は実行されます。
しかし&&
、2番目のものでは実行されません。
これは、操作間の「遅延」論理「AND」オペランドです。
;
1または&&
1?それとも両方を意味しますか?
&&
.
&&
昔、近くのコンピューターで使っていたので、
root# pwd
/
root# cd /tnp/test; rm -rf *
cd: /tnp/test: No such file or directory
...
... and after a while ...
...
^C
しかし助けられなかった...;)
cd /tnp/test && rm -rf *
安全です...;)
rm -rf /tnp/test
rm /tnp/test/ -rf
、致命的なミスクリックを防ぐために使用することをお勧めします
&&
前のコマンドがステータス0で終了した場合に次のコマンドを実行することを意味します。逆の場合、||
つまり、前のコマンドが0以外のステータスで終了した場合に;
常に実行されるように使用します。
前のコマンドが正常に終了したかどうかによって、特定のアクションを実行する必要がある場合に非常に役立ちます。
byで区切られたコマンド;
は、完了ステータスに関係なく順次実行されます。
を使用する&&
と、最初のコマンドが正常に完了した(終了ステータス0を返す)場合にのみ、2番目のコマンドが実行されます。
これは、のbashマンページで説明されていLists
ます。Unixのようなシェルがこれらの演算子の両方をサポートすることを期待しますが、Androidシェルについて具体的には知りません。