为什么在Bash中'['之前'''之后会有一个空格?

为什么在Bash中'['之前'''之后会有一个空格?

我试图编写一个使用if语句的Bash脚本。

if  [$CHOICE -eq 1];

剧本是给我的错误,直到我后得到的空间[和之前]如下所示:

if  [ $CHOICE -eq 1 ];

我的问题是,为什么方括号周围的空间在Bash中如此重要?


慕容3067478
浏览 774回答 4
4回答

子衿沉夜

一旦你掌握了这[是一个命令,一大堆就会变得更加清晰![是拼写“ test”的另一种方式。help [然而,虽然它们完全相同,但test结果却有了更详细的帮助页面。校验help test...欲获得更多信息。此外请注意,我是按意图使用,help test而不是man test。这是因为test和[有壳内置命令时下。他们的功能设置会有所不同/bin/test,并/bin/[Coreutils的这是在描述的命令man页。

Smart猫小萌

一点历史:这是因为'['在历史上不是shell内置的,而是一个单独的可执行文件,它接收expresson作为参数并返回结果。如果你没有用空格包围'[',那么shell会在$ PATH中搜索不同的文件名(而不是找到它)。- Andrew Medico 09年6月24日在1:13

一只名叫tom的猫

[是一个命令,$CHOICE应该是一个参数,但通过执行[$CHOICE([和之间没有任何空格$CHOICE),您正在尝试运行一个名为的命令[$CHOICE。命令的语法是:command arguments separated with space

DIEA

[是一个test命令。所以它需要空间。
打开App,查看更多内容
随时随地看视频慕课网APP