当前位置:  技术问答>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会有这些提示,请高手指点

|
在shell中,叹号本身是负责事件引用的。

无引号版:bash期待你输入一个叹号然后跟上一个数字,否则他不知道引用哪条指令,所以第一行说你语法错误。

双引号版:双引号允许解释字符串中特殊符号并使其展开,这里的叹号展开后仍然是个叹号,但仍然期待一个数字作为行号,没有数字,提示了event not found,可能用了默认的某个数字。所以事实上 !100 和 "!100" 是一样的。

单引号版:单引号不负责解析特殊符号,作为一个纯字符串传出。所以单引号的版本,是将叹号作为一条命令进行解释。

总结为:
无符号版被语法解释器解释后发现语法错误,然后退出。
双引号版语法解释器认为引号中包含一个可展开的命令,语法上是没问题,这就绕开了语法解释器,当执行事件引用的时候,发现没有对应的事件,然后退出。
单引号版语法解释仍然认为没有问题,并且不需要展开,此时将以叹号作为一个命令直接执行,而系统中没有一个叹号命令,所以报命令错误。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,