私は以下のシェルスクリプトコードを持っています:
if [ [ "$prevState" != "\"CANCELED\""] || ["$prevState" = "\"CANCELED\"" & "$1" = "YES" ] ]
ここで、prevstateの値はCANCELEDで、$ 1の値はNOです。しかし、シェルの実行では、以下のエラーが発生します。
/dir/checks/Check.sh: 30: [: /dir/checks/Check.sh: 30: /dir/checks/Check.sh: missing ]NO: not found
論理ANDおよびOR演算子を使用して、シェルスクリプト内で内部を比較する方法。上記の条件のすべての変数は文字列です
の構成if
は次のとおりです。
if some_command
then
# this is executed, if `some_command` returned with 0 exit status
some_other_command
fi
そして、そうではありません 。これは通常のプログラムであり、実行可能であり、実行可能と同等です。プログラムの表現0終了ステータスで終了プログラム内で評価が真であるとdeterminatedされます。と同じ結果で行うことができます。 if [ expression ]
[
test
[
[
if /usr/bin/[ "a" = "b" ]
if [ "a" = "b" ]
を使用する&&
と、||
さまざまなコマンドを「チェーン」できます。これは、コマンドのリストと呼ばれます。リストの終了ステータスは、最後に実行されたコマンドの終了ステータスです。&&
左の1が終了ステータス0で返されたときに右のコマンドを実行すると、||
-左の1が終了ステータスの異なると戻ったときに、右のコマンドは、リスト内のコマンドを順番に実行されることを0注意が実行a || b && c
される(a || b) && c
とはありません 。 a || (b && c)
あなたが試すことができます:
# if
# prevState is not \"CANCELED\" _including the quotes_
# or
# first argument is "YES"
# then
if [ "$prevState" != "\"CANCELED\"" ] || [ "$1" = "YES" ] ; then
blabla
fi
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加