回答:
==であるbashため特異的エイリアス=の代わりに文字列(字句)比較行い、-eq数値比較を。(Perlから逆向きです:単語スタイルの演算子は数値であり、シンボリックなものはレキシカルです。)
-eqように指示bashします(0文字列が数値でない場合は警告なしに生成されます)。
[ 01 -eq 1 ]but [ 01 != 1 ]です。
==として[、操作者が非標準であり、使用すべきではない、そうでないbashの固有。これはkshによって導入され、zsh(最初=に引用する必要がありますが)、yashおよびGNU [ユーティリティ(および一部のシステムでkshスクリプトとして実装されたそのようなユーティリティ)でもサポートされています。
$ if [ "hello" -eq 0 ]; then echo true; fi bash:[:hello:integer expression expected
ボロバンの答えを詳しく説明するには...
何もありません>=か、<=文字列の比較演算子。しかし、((...))算術コマンドでそれらを使用して整数を比較することもできます。
また、(他の文字列比較演算子を使用することができ==、!=、<、>、ではなく、=あなたが内側にそれらを使用する場合)の整数を比較します((...))。
例
[[ 01 -eq 1 ]]と(( 01 == 1 ))整数の比較を行います。両方とも真実です。[[ 01 == 1 ]]と[ 01 = 1 ]文字列比較を行います。どちらも偽です。(( 01 -eq 1 ))と(( 01 = 1 ))エラーを返します。注:二重括弧構文[[...]]と二重括弧構文((...))は、すべてのシェルでサポートされているわけではありません。
mksh/ zshを除く(POSIXモードを除く(POSIX機能ではないが)))は、8進数(10進数で8)として扱われる(( 010 == 10 ))ためfalseを返すことに注意してください010。
test/ [実装には>=/ <=演算子はありませんが(yash'sに[はあります)、exprそのような演算子がありますが、引数が数値として認識される場合は算術比較を行います(expr 01 '>=' 1trueをexpr X01 '>=' X1返し、falseを返します)。
[ $UID -eq 0 ]ではなく[ $UID -eq 0]。