5

こんにちは私はsomoethingに取り組んでいます、私は'&&'と'||'の複数の変数を取るifステートメントを作成する必要があります 組み合わせ。今のところ、この単純なタスクを実行しようとしていますが、「コマンドが見つかりません」というエラーが発生します。私は最初に&&より2カウントしたい|| コードに設定したフラグが付いています。以下は私が試しているコードです

if [[$pcount -eq 0 ] && [$ucount -eq 0]] ||  [test $flag -eq 1]
then 
do my stuff 
else 
exit 1
fi

前もって感謝します。

4

2 に答える 2

9

はシェルコマンドであり、個別の構文構造ではない[ ... ]ため、ネストすることはできません。[Bashでは、[[ ... ]]ネストをサポートする構文構造を使用できます。ポータブルでは、優先順位に括弧をsh使用できます。( ... )

if ([ $pcount -eq 0 ] && [ $ucount -eq 0 ]) ||  [ $flag -eq 1 ]

追記:

  • [test condition][演算子はすでにのエイリアスであるため、意味がありませんtest[ condition ]またはのいずれかを記述しますtest condition

  • [テストの前にスペースを残してください。そうしないと、コマンド名としてsh認識されません。他のコマンドと同様に、特別な解析ルールに関連付けられていません。[[

于 2012-11-14T09:06:23.573 に答える
3

bashでは、次のように実行できます。

if [[ ( $pcount == 0  &&  $ucount == 0 ) || ( $flag == 1 ) ]]
then
    echo "do stuff"
fi

または:

if [ "$pcount" -eq 0 -a "$ucount" -eq 0 ] || [ "$flag" -eq 1 ]
then
     echo "do stuff"
fi

しかし、私は最初のアプローチをお勧めします。

于 2012-11-14T09:02:42.170 に答える