当前位置: 技术问答>linux和unix
叹号
来源: 互联网 发布时间:2017-05-09
本文导语: [root@bogon ~]# ! bash: syntax error near unexpected token `newline' [root@bogon ~]# "!" bash: !: event not found [root@bogon ~]# '!' bash: !: command not found 不知道为什么shell会有这些提示,请高手指点 | 在shell...
[root@bogon ~]# !
bash: syntax error near unexpected token `newline'
[root@bogon ~]# "!"
bash: !: event not found
[root@bogon ~]# '!'
bash: !: command not found
不知道为什么shell会有这些提示,请高手指点
bash: syntax error near unexpected token `newline'
[root@bogon ~]# "!"
bash: !: event not found
[root@bogon ~]# '!'
bash: !: command not found
不知道为什么shell会有这些提示,请高手指点
|
在shell中,叹号本身是负责事件引用的。
无引号版:bash期待你输入一个叹号然后跟上一个数字,否则他不知道引用哪条指令,所以第一行说你语法错误。
双引号版:双引号允许解释字符串中特殊符号并使其展开,这里的叹号展开后仍然是个叹号,但仍然期待一个数字作为行号,没有数字,提示了event not found,可能用了默认的某个数字。所以事实上 !100 和 "!100" 是一样的。
单引号版:单引号不负责解析特殊符号,作为一个纯字符串传出。所以单引号的版本,是将叹号作为一条命令进行解释。
总结为:
无符号版被语法解释器解释后发现语法错误,然后退出。
双引号版语法解释器认为引号中包含一个可展开的命令,语法上是没问题,这就绕开了语法解释器,当执行事件引用的时候,发现没有对应的事件,然后退出。
单引号版语法解释仍然认为没有问题,并且不需要展开,此时将以叹号作为一个命令直接执行,而系统中没有一个叹号命令,所以报命令错误。
无引号版:bash期待你输入一个叹号然后跟上一个数字,否则他不知道引用哪条指令,所以第一行说你语法错误。
双引号版:双引号允许解释字符串中特殊符号并使其展开,这里的叹号展开后仍然是个叹号,但仍然期待一个数字作为行号,没有数字,提示了event not found,可能用了默认的某个数字。所以事实上 !100 和 "!100" 是一样的。
单引号版:单引号不负责解析特殊符号,作为一个纯字符串传出。所以单引号的版本,是将叹号作为一条命令进行解释。
总结为:
无符号版被语法解释器解释后发现语法错误,然后退出。
双引号版语法解释器认为引号中包含一个可展开的命令,语法上是没问题,这就绕开了语法解释器,当执行事件引用的时候,发现没有对应的事件,然后退出。
单引号版语法解释仍然认为没有问题,并且不需要展开,此时将以叹号作为一个命令直接执行,而系统中没有一个叹号命令,所以报命令错误。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。