2017-05-24 34 views
-2

我想運行一個相同的代碼,它在Unix中工作正常,但在Linux中不工作。
示例代碼:
if [「$ 1」-eq「」] then echo「No parameter passed!Please pass the number of rows are queued。」 exit 1 fi echo「Parameter is $ 1」;如果條件在Unix和Linux env

在Linux環境
當運行SH /tmp/script.sh它引發錯誤 /tmp/script.sh:第1行:[::整數表達預期 參數是
當我運行SH /tmp/script.sh 100它thows錯誤 /tmp/script.sh:第1行:[::整數表達預期 參數是100

在Unix環境
當我運行SH /tmp/script.sh它說沒有參數傳遞!請傳遞要排隊的行數。
當我運行SH /tmp/script.sh 100它說參數是100
當我運行SH /tmp/script.sh ABCD它說沒有參數傳遞!請傳遞要排隊的行數。

任何人都可以解釋我爲什麼表現不同?我認爲這些功能不應該取決於環境。

+0

輸入'man test'。搜索'-eq'。 –

+0

我在Linux中使用if [[「$ 1」-eq「」]]替換if [「$ 1」-eq「」],並且它工作正常。我仍然想知道如何以及爲什麼。 –

+0

它看起來像你在'-eq'的描述中找到的和我發現的不一樣。我想知道你的版本說什麼。 –

回答

0

-eq確實數字比較。您希望=(單個等號)用於字符串比較。有關更多信息,請參閱arithmetic expressions

+0

我只是困惑,如果[「$ 1」-eq「」]聲明在Unix上,但在Linux上不起作用。我在兩個env上檢查了shell和它的ksh, –