linux命令行中,双引号中的感叹号将被解释为历史命令。

命令:

test -e ttt/ && echo "file exist!" || echo "file Not exist!"

输出:

bash: !": event not found
命令:

test -e ttt/ && echo "file exist" || echo "file Not exist"
输出:

file exist

实验如下:

arthur@E430 ~/workspace/test]$ls
bin  HelloWorld.class  HelloWorld.java   re     t2.sh  t.sh
d    HelloWorld.jar    HelloWorld.java~  t1.sh  t.py
[arthur@E430 ~/workspace/test]$echo "!!"
echo "ls "
ls
[arthur@E430 ~/workspace/test]$pwd
/home/arthur/workspace/test
[arthur@E430 ~/workspace/test]$echo "!l"
echo "ls "
ls 
[arthur@E430 ~/workspace/test]$echo "!!"
echo "echo "ls ""
echo ls
[arthur@E430 ~/workspace/test]$echo "!!"
echo "echo "echo "ls """
echo echo ls 
[arthur@E430 ~/workspace/test]$

如果是想要输出感叹号,可以:

1. 使用单引号。

一般要输出特殊符号,可以用单引号'引文',或者\。
这时候最好用单引号,如:
echo 'Hello World !'比如要输出That's good.就用
echo "That's good."

2.

\! 表示感叹号
比如echo Hello\ World\ \!,
linux很多符号都是用转义符"\"来表示的,尽量不要用双引号“”。
原因你自己 echo "Hello World !",就会发现输出错误的,
而 echo "Hello World \!",又发现连“\”也一起输出了

查资料如下:

在双引号中,感叹号(!)的含义根据使用的场合有所不同,在命令行环境,它将被解释为一个历史命令,而在脚本中,则不会有特殊含义。

Advanced Bash-Scripting Guide: 5.1. Quoting Variables 写道
Encapsulating "!" within double quotes gives an error when used from the command line. This is interpreted as a history command. Within a script, though, this problem does not occur, since the Bash history mechanism is disabled then.

在命令行环境,感叹号(!)称之为“历史扩展字符(the  history  expansion character)”。

[root@jfht ~]# pwd 
/root
[root@jfht ~]# echo "!" 
-bash: !: event not found
[root@jfht ~]# echo "!pwd" 
echo "pwd"
pwd
[root@jfht ~]#

在脚本中使用感叹号,将不会进行历史扩展。

参考资料:

http://codingstandards.iteye.com/blog/1166282

在双引号中,感叹号(!)的含义根据使用的场合有所不同,在命令行环境,它将被解释为一个历史命令,而在脚本中,则不会有特殊含义。

Advanced Bash-Scripting Guide: 5.1. Quoting Variables 写道
Encapsulating "!" within double quotes gives an error when used from the command line. This is interpreted as a history command. Within a script, though, this problem does not occur, since the Bash history mechanism is disabled then.

在命令行环境,感叹号(!)称之为“历史扩展字符(the  history  expansion character)”。

[root@jfht ~]# pwd 
/root
[root@jfht ~]# echo "!" 
-bash: !: event not found
[root@jfht ~]# echo "!pwd" 
echo "pwd"
pwd
[root@jfht ~]#

在脚本中使用感叹号,将不会进行历史扩展。

linux命令行中,双引号中的感叹号将被解释为历史命令相关推荐

  1. shell 脚本中双引号、单引号、反引号的区别,其他命令

    如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @ 通常make执行的命令如果出错(该命令的退出状态非0)就立刻终止 ...

  2. Shell脚本中 双引号(“”)单引号(‘’)反引号(``)的区别

    1.由单引号括起来的字符都作为普通字符出现.特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释. 2.由双引号括起来的字符,除$(美元符号).\(反斜杠).'(单引号).和" ...

  3. 【vim】系统剪切板、vim寄存器之间的复制粘贴操作命令?系统剪切板中的内容复制粘贴到命令行?vim文本中复制粘贴到命令行

    一.系统剪切板和文本内容的复制粘贴 1.1 从系统剪切板复制粘贴到文本中 需要操作3次: 分别是英文双引号.一个加号或梅花号,最后是一个p 也即"+p 或者直接使用组合键[Shift + i ...

  4. VB小技巧:字符变量中双引号的输入

    '如要输入表示    "aa" '理论表达方式如: a=""aa""  '但会出错 'ASC码可能达到效果 kk=chr(34)   &am ...

  5. 命令行参数在VB中的利用

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 相册 广场 游戏 kf ...

  6. 使用命令行修改注册表中的值

    使用命令行修改注册表中的值 使用 reg 命令 reg /? 查看命名 2 . reg add reg add 增加或修改,没有的就增加,已有的就修改(名称及类型) reg add 语法: reg a ...

  7. JavaScript 中双引号、单引号和反引号的区别

    关注微信公众号:前端充电宝,获取最新原创文章: 在 JavaScript 中,单引号('')和双引号("") 经常用于创建字符串.通常情况下,使用双引号或单引号没有区别,它们最后都 ...

  8. 【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )

    文章目录 前言 一.Android 命令行与 PC 可执行 JAR 文件不兼容 二.Android 命令行使用 dalvik 命令不能直接执行 Kotlin 编译的 dex 文件 前言 尝试在 And ...

  9. php访问数组用引号_php双引号中访问数组元素报错如何解决

    最近在做微信公众号开发,在一个发送图文接口中,需要把数组元素拼接在XML字符串中,本文主要和大家分享一篇基于php双引号中访问数组元素报错的解决方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小 ...

最新文章

  1. UStore-自定义JDF文件格式输出
  2. 微信小程序asp服务器架设,asp写的微信小程序支付demo-服务器端是asp+mdb的
  3. 【Android UI设计与开发】第16期:滑动菜单栏(一)
  4. c++17(21)-volatile和const、const_cast
  5. redis缓存穿透、缓存击穿、缓存雪崩概念及解决方案
  6. JavaMail中解决中文附件名乱码的问题
  7. 前端学习(589):在console中调试日志
  8. .Net DES加密解密(不带向量)
  9. 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析
  10. java位运算(转)
  11. java读取文件夹,如何从Java读取文件夹中的所有文件?
  12. 21.1-21.4 memcached介绍,安装使用,状态查看
  13. kali 开启ssh服务
  14. 995. K 连续位的最小翻转次数
  15. Android:单元测试InstrumentationTestRunner
  16. 在VC下实现串口通讯
  17. webgame中常见安全问题、防御方式与挽救措施
  18. SAS学习笔记27 卡方检验
  19. 对Json数据的处理(模拟获取数据是来自于本地)
  20. linux离线安装netstat,在Ubuntu中安装netstat等网络工具

热门文章

  1. PAT甲级1087 All Roads Lead to Rome (30分):[C++题解]dijkstra求单源最短路综合、最短路条数、保存路径
  2. 上海交通大学乐经良高数手写笔记-多元微积分
  3. mysql范围查找性能_MYSQL(四)查询性能优化
  4. 关闭linux远程桌面,[Linux]Ubuntu 16.04 远程桌面(简单暴力)
  5. matlab求一个方程组的系数矩阵,【求解】matlab求解非齐次方程组,但是系数矩阵是复数,求帮忙...
  6. dnf mysql数据库密码,CentOS7使用dnf安装mysql的方法
  7. wpf项目源代码_C# WPF开源控件库:MahApps.Metro
  8. php大牛额城战笔记,PHP语言大牛开发笔记(8)——MySQL数据库基础回顾[2]
  9. 简单的html5,简单的HTML5初步入门教程
  10. oracle 查询各科前3名_2020年山东高校排行榜前3无悬念,山东理工大学省内第17全国250名...