論理テストの出力を条件とする変数の1行定義

論理テストの出力を条件とする変数の1行定義

プログラミングではbash、常に次のような長い方法で条件変数を定義します。

dog=1
if [[ $dog -eq 1 ]] ; then
   cow=1
else
   cow=0
fi

これは明らかに非常に非効率的です。私はMATLAB次のことができます

cow=(dog==1)

つまり、5行ではなく1行です。 Bashでも同様の方法がありますか?どんなアドバイスもありがとうございます。

ベストアンサー1

純粋な整数ベースの割り当てには、expr ? expr : expr条件付き演算子を使用できます。

dog=1
cow=$((dog ? 1 : 0))

これは牛と犬の整数値に対してのみ機能し、0/0以外の値のみをテストします(ここでは犬)。

dog=2
cow=$((dog ? 42 : 7))

おすすめ記事