web-dev-qa-db-ja.com

[$?の意味== 1] &&は0を返します

このコマンドを理解する必要があります。

[ $? == 1 ] && return 0
2

$?は、前のコマンドの終了コードに評価されます。

&&は、最初のコマンドがゼロの終了コードを返した場合にのみ2番目のコマンドを実行するコマンドセパレーターです。

[またはtestは、さまざまな比較テストを行うためのシェルツールです。

==は、string比較のために、ここで使用するのは間違ったテストであることを指摘しておく必要があります。 -eq数値比較の同等性テストです。

したがって、[ $? -eq 1 ] && return 0は直前のコマンドの終了コードを調べ、それを1と比較します。一致する場合、コマンドreturn 0が実行されます(これにより、このテストが存在する関数の後続のコマンドであると私が想定しているものがバイパスされます)。

==-eqの使用法の違いは、[ 01 -eq 1 ]がtrueであるのに対し、[ 01 == 1 ]がfalseであるということです。

7
DopeGhoti