bash文字列の比較結果を変数に格納したいのですが、その効果は次のとおりです。
if [[ $a == $b ]]; then
res=1
else
res=0
fi
私は次のようなもっと簡潔なものを書くことができることを望んでいました:
res2=$('$a'=='$b') #Not valid bash
if構文を延期せずに、私が望むことを達成する方法はありますか?
bash文字列の比較結果を変数に格納したいのですが、その効果は次のとおりです。
if [[ $a == $b ]]; then
res=1
else
res=0
fi
私は次のようなもっと簡潔なものを書くことができることを望んでいました:
res2=$('$a'=='$b') #Not valid bash
if構文を延期せずに、私が望むことを達成する方法はありますか?
次のいずれかをお勧めします。
res=0; [ "$a" == "$b" ] && res=1
また
res=1; [ "$a" == "$b" ] || res=0
あなたが望んでいたほど単純ではありませんが、if ... else ... fi
.
$?
前のコマンドからの戻り値を含む変数を使用することもできます。
res="$( [[ $a == $b ]]; echo $? )"
それはあなたが与えた数字を逆にするでしょうが。最終結果は次のようになります。
if [[ $a == $b ]]; then
res=0
else
res=1
fi
これは、シェルが の戻り値を0
true および1
false として解釈するためです。
私もこの解決策を完全に支持していると言っているわけではありません。それはハックで、少し不明確です。しかし、それは簡潔であり、あなたが求めたのは簡潔です。