超级简单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
测试,也可以在任何地方使用任何其他命令。不要猜测,请尝试。