为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

为什么在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页。


查看完整回答
反对 回复 2019-05-24
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

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


查看完整回答
反对 回复 2019-05-24
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

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

command arguments separated with space


查看完整回答
反对 回复 2019-05-24
?
DIEA

TA贡献1820条经验 获得超2个赞

[是一个test命令。所以它需要空间。


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 837 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信