Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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 If(variable>;integer)将(variable)作为命令处理_Bash - Fatal编程技术网

超级简单bash If(variable>;integer)将(variable)作为命令处理

超级简单bash If(variable>;integer)将(variable)作为命令处理,bash,Bash,我觉得这应该很简单,但我无法通过这一步 $num = 5 if [$num > 2]; then echo greater; fi 问题是,我一直得到[5:command not found 为什么它没有正确地评估if[test]块呢?就像shell忘记了if而只是转到“嘿,[5>2看起来不像命令,我找不到[5”……但是[5不是命令,它是if测试块的一部分 我尝试过使用不同的括号,并使用-gt而不是。问题是bash实际上从未进行过测试。出于某种原因,如果只是设法找到了答案,它会忽略:

我觉得这应该很简单,但我无法通过这一步

$num = 5
if [$num > 2]; then echo greater; fi
问题是,我一直得到
[5:command not found

为什么它没有正确地评估
if[test]
块呢?就像shell忘记了
if
而只是转到“嘿,
[5>2
看起来不像命令,我找不到
[5
”……但是
[5
不是命令,它是
if
测试块的一部分


我尝试过使用不同的括号,并使用
-gt
而不是
。问题是bash实际上从未进行过测试。出于某种原因,如果

只是设法找到了答案,它会忽略

真出乎意料,[括号和变量之间需要一个空格


我从来没有猜到。

我想你需要在
[
]
之间留出一个空格,即
如果[$num>2];那么,
…就是这样。我也刚刚发布了一个我找到的答案。我知道这会很微妙。干杯!要将问题标记为已解决,而不是编辑主题,请将答案标记为已接受(通过单击其左侧的绿色复选标记)。如果
是命令,则后面的内容可能是任何有效命令(甚至是由换行符或分号分隔的一系列命令),恰好是
[
命令(实际上是
test
命令的另一个名称)在
if
语句中非常常见。但是您可以使用任何其他命令作为
if
测试,也可以在任何地方使用任何其他命令。不要猜测,请尝试。