Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash测试-应为一元运算符_Bash - Fatal编程技术网

Bash测试-应为一元运算符

Bash测试-应为一元运算符,bash,Bash,我有下列支票。我尝试调用带2个参数的isValid函数 if [ $(isValid $road $number) -eq 0 ] ; then (...) 作为回报,我得到: [: -eq: unary operator expected 在这种情况下,我希望使用[]而不是[]。我逃避了与你的争吵,但没有成功。 我错过了什么 编辑: 如果[$isValid$road$number-等式0];然后 这将检查标准输出是否等于0。例: if [ $(echo 0) -eq 0 ] ; then

我有下列支票。我尝试调用带2个参数的isValid函数

if [ $(isValid $road $number) -eq 0 ] ; then
(...)
作为回报,我得到:

[: -eq: unary operator expected
在这种情况下,我希望使用[]而不是[]。我逃避了与你的争吵,但没有成功。 我错过了什么

编辑:

如果[$isValid$road$number-等式0];然后

这将检查标准输出是否等于0。例:

if [ $(echo 0) -eq 0 ] ; then
回声0输出0。然后,使用[命令]检查命令echo 0的输出是否等于0。如果表达式为true,则[命令]返回零状态。如果表达式为false,则返回非零状态

您要检查命令的退出状态。只需:

if isValid "$roud" "$number"; then
当命令的退出状态为0时,if表达式运行。您可以使用!command反转退出状态。

isValid$road$number的输出是什么?如果我错了,请纠正我,但是$echo 0在子shell中运行echo 0,因此它给我们0。那么,$echo 0-eq 0不应该为真吗?[$echo 0-eq 0]将以0退出状态返回。这是真的。在计算机中,0退出状态被视为成功,非零是失败。开始时可能会让人困惑,但您可以习惯。例如,true命令以零状态返回,而false返回1。因此,如果[$echo 0-eq 0]为真,则不应该[$isValid$road$number-eq 0]是否也是真的?否。isValid不输出0。输出->使用命令的文件描述符1进入标准输出的内容。它不回显0或printf 0或类似内容。函数isValid返回0。它设置退出状态。您可以使用$?,例如:out=$isValid$road$number;ret=$?;echo isValid output$out;echo isValid返回:$ret。命令替换$…`用命令的标准输出内容展开,并删除尾随空行。
if isValid "$roud" "$number"; then