2017-05-24 38 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, –