1

コマンド プロンプトで bash で次の操作を行うとします。

cmd1;cmd2;cmd3

失敗した場合cmd1、どうすれば bash が実行されなくなりますかcmd2

4

1 に答える 1

8
cmd1 && cmd2 && cmd3

説明

実行しcmd1ます。失敗した場合は実行さcmd2cmd3ません。

なんで?falseは、他のものとの論理積が常にfalseに等しいため、falsecmd1返す場合はandを評価する必要はありません。同様の理由で、成功して失敗した場合は、実行しないでください。cmd2cmd3cmd1cmd2cmd3

ノート

ややこしいことに、POSIX システム (Linux やその他の UNIX バリアントなど) は、成功の場合は 0 を返し、失敗の場合はゼロ以外を返します。

だから、上で失敗と言うと

  • false =ゼロ以外=失敗

  • true =ゼロ=成功

なんで?リターンコードの数値が使用されるため、異なる障害コードを示します。

例えば、

$ ls /root
ls: cannot open directory /root: Permission denied
$ echo $? 
2
$ asdf
asdf: command not found...
$ echo $?
127
$ ls /
bin  boot  data  dev  etc  home  lib  ...
$ echo $?
0

ls軽微な問題の場合は「1」を返し、より深刻な問題の場合は「2」を返します。bash シェルは、「コマンドが見つからない」ことを示すために「127」を返し、成功ls /を示すために「0」を返します。

于 2013-07-17T13:08:05.130 に答える