私はbashで整数比較を実行しています(ユーザーがrootとして実行されていることを確認しようとしています)、2つの異なるアプローチを見つけました。
ダブルは次のとおりです。
if [ $UID == 0 ]
then
fi
-eq
if [ $UID -eq 0 ]
then
fi
bash には >= または <= がなく、-ge と -le だけがあることがわかります。それでは、==
aがある理由は何ですか-eq
?
両側の比較方法に違いはありますか?
答え1
==
数値比較の代わりに文字列(語彙)比較を実行するbash
特定のエイリアスです。 (Perlの後退です。単語スタイル演算子は数字で、記号演算子は語彙です。)=
-eq
答え2
詳細説明ボロバンの答え...
文字列には>=
OR比較演算子はありません<=
。ただし、((...))
算術命令と組み合わせて使用して整数を比較できます。
内部的に別の文字列比較演算子を使用している場合==
(使用しない場合)、それを使用して整数を比較することもできます。!=
<
>
=
((...))
はい
[[ 01 -eq 1 ]]
どちらも(( 01 == 1 ))
整数比較を実行します。どちらも本当です。[[ 01 == 1 ]]
どちらも[ 01 = 1 ]
文字列比較を行います。どちらも偽です。- どちら
(( 01 -eq 1 ))
も(( 01 = 1 ))
エラーを返します。
注:すべてのシェルが二重括弧構文と二重[[...]]
括弧構文をサポートしているわけではありません。((...))
答え3
整数比較をするには(())を使用することをお勧めしますが、> =などを使用することもできます。
例:
if (( $UID == 0 )); then
echo "You are root"
else
echo "You are not root"
fi