このコマンドを理解する必要があります。
[ $? == 1 ] && return 0
式$?
は、前のコマンドの終了コードに評価されます。
&&
は、最初のコマンドがゼロの終了コードを返した場合にのみ2番目のコマンドを実行するコマンドセパレーターです。
[
またはtest
は、さまざまな比較テストを行うためのシェルツールです。
==
は、string比較のために、ここで使用するのは間違ったテストであることを指摘しておく必要があります。 -eq
は数値比較の同等性テストです。
したがって、[ $? -eq 1 ] && return 0
は直前のコマンドの終了コードを調べ、それを1
と比較します。一致する場合、コマンドreturn 0
が実行されます(これにより、このテストが存在する関数の後続のコマンドであると私が想定しているものがバイパスされます)。
==
と-eq
の使用法の違いは、[ 01 -eq 1 ]
がtrueであるのに対し、[ 01 == 1 ]
がfalseであるということです。