为什么在Bash中'['之前'''之后会有一个空格?我试图编写一个使用if语句的Bash脚本。if [$CHOICE -eq 1];剧本是给我的错误,直到我后得到的空间[和之前]如下所示:if [ $CHOICE -eq 1 ];我的问题是,为什么方括号周围的空间在Bash中如此重要?
4 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
一旦你掌握了这[
是一个命令,一大堆就会变得更加清晰!
[
是拼写“ test
”的另一种方式。
help [
然而,虽然它们完全相同,但test
结果却有了更详细的帮助页面。校验
help test
...欲获得更多信息。
此外请注意,我是按意图使用,help test
而不是man test
。这是因为test
和[
有壳内置命令时下。他们的功能设置会有所不同/bin/test
,并/bin/[
Coreutils的这是在描述的命令man
页。
Smart猫小萌
TA贡献1911条经验 获得超7个赞
一点历史:这是因为'['在历史上不是shell内置的,而是一个单独的可执行文件,它接收expresson作为参数并返回结果。如果你没有用空格包围'[',那么shell会在$ PATH中搜索不同的文件名(而不是找到它)。- Andrew Medico 09年6月24日在1:13
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
[
是一个命令,$CHOICE
应该是一个参数,但通过执行[$CHOICE
([
和之间没有任何空格$CHOICE
),您正在尝试运行一个名为的命令[$CHOICE
。命令的语法是:
command arguments separated with space
添加回答
举报
0/150
提交
取消