为什么在Bash中的'有一个空格?
我试图写一个使用if
语句的Bash脚本。
if [$CHOICE -eq 1];
脚本给了我错误,直到我在[
之前]
之后给出空格,如下所示:
if [ $CHOICE -eq 1 ];
我的问题是,为什么方括号中的空格在Bash中如此重要?
一旦你掌握了这个命令 ,就会变得更加清晰!
[
另一种拼写“ test
”的方法。
help [
然而,尽pipe他们完全一样, test
结果是有一个更详细的帮助页面。 检查
help test
…了解更多信息。
此外请注意,我正在使用,通过意图, help test
而不是man test
。 那是因为test
和[
现在是shell命令。 他们的function集可能不同于/bin/test
和/bin/[
来自coreutils,它们是man
页中描述的命令。
从另一个问题 :
有点历史:这是因为'['历史上不是一个内置的shell,而是一个单独的可执行文件,它以expression式作为参数并返回结果。 如果你没有用空格来包围'['',那么shell会在$ PATH中search一个不同的文件名(而没有find它)。 – – 安德鲁·梅迪科2009年 6月24日在1:13
[
是一个命令, $CHOICE
应该是一个参数,但是通过执行[$CHOICE
( [
和$CHOICE
之间没有任何空格[
),试图运行名为[$CHOICE
。 命令的语法是:
command arguments separated with space
[
是一个test
命令。 所以它需要空间。