linux命令行中,双引号中的感叹号将被解释为历史命令
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 \!",又发现连“\”也一起输出了
查资料如下:
在双引号中,感叹号(!)的含义根据使用的场合有所不同,在命令行环境,它将被解释为一个历史命令,而在脚本中,则不会有特殊含义。
在命令行环境,感叹号(!)称之为“历史扩展字符(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
在双引号中,感叹号(!)的含义根据使用的场合有所不同,在命令行环境,它将被解释为一个历史命令,而在脚本中,则不会有特殊含义。
在命令行环境,感叹号(!)称之为“历史扩展字符(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命令行中,双引号中的感叹号将被解释为历史命令相关推荐
- shell 脚本中双引号、单引号、反引号的区别,其他命令
如果make执行的命令前面加了@字符,则不显示命令本身而只显示它的结果; Android中会定义某个变量等于@,例如 hide:= @ 通常make执行的命令如果出错(该命令的退出状态非0)就立刻终止 ...
- Shell脚本中 双引号(“”)单引号(‘’)反引号(``)的区别
1.由单引号括起来的字符都作为普通字符出现.特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释. 2.由双引号括起来的字符,除$(美元符号).\(反斜杠).'(单引号).和" ...
- 【vim】系统剪切板、vim寄存器之间的复制粘贴操作命令?系统剪切板中的内容复制粘贴到命令行?vim文本中复制粘贴到命令行
一.系统剪切板和文本内容的复制粘贴 1.1 从系统剪切板复制粘贴到文本中 需要操作3次: 分别是英文双引号.一个加号或梅花号,最后是一个p 也即"+p 或者直接使用组合键[Shift + i ...
- VB小技巧:字符变量中双引号的输入
'如要输入表示 "aa" '理论表达方式如: a=""aa"" '但会出错 'ASC码可能达到效果 kk=chr(34) &am ...
- 命令行参数在VB中的利用
分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 相册 广场 游戏 kf ...
- 使用命令行修改注册表中的值
使用命令行修改注册表中的值 使用 reg 命令 reg /? 查看命名 2 . reg add reg add 增加或修改,没有的就增加,已有的就修改(名称及类型) reg add 语法: reg a ...
- JavaScript 中双引号、单引号和反引号的区别
关注微信公众号:前端充电宝,获取最新原创文章: 在 JavaScript 中,单引号('')和双引号("") 经常用于创建字符串.通常情况下,使用双引号或单引号没有区别,它们最后都 ...
- 【错误记录】记录 Android 命令行执行 Java 程序中出现的错误 ( dx 打包 PC 可执行文件报错 | dalvik 命令执行 kotlin 编译的 dex 文件报错 )
文章目录 前言 一.Android 命令行与 PC 可执行 JAR 文件不兼容 二.Android 命令行使用 dalvik 命令不能直接执行 Kotlin 编译的 dex 文件 前言 尝试在 And ...
- php访问数组用引号_php双引号中访问数组元素报错如何解决
最近在做微信公众号开发,在一个发送图文接口中,需要把数组元素拼接在XML字符串中,本文主要和大家分享一篇基于php双引号中访问数组元素报错的解决方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小 ...
最新文章
- UStore-自定义JDF文件格式输出
- 微信小程序asp服务器架设,asp写的微信小程序支付demo-服务器端是asp+mdb的
- 【Android UI设计与开发】第16期:滑动菜单栏(一)
- c++17(21)-volatile和const、const_cast
- redis缓存穿透、缓存击穿、缓存雪崩概念及解决方案
- JavaMail中解决中文附件名乱码的问题
- 前端学习(589):在console中调试日志
- .Net DES加密解密(不带向量)
- 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析
- java位运算(转)
- java读取文件夹,如何从Java读取文件夹中的所有文件?
- 21.1-21.4 memcached介绍,安装使用,状态查看
- kali 开启ssh服务
- 995. K 连续位的最小翻转次数
- Android:单元测试InstrumentationTestRunner
- 在VC下实现串口通讯
- webgame中常见安全问题、防御方式与挽救措施
- SAS学习笔记27 卡方检验
- 对Json数据的处理(模拟获取数据是来自于本地)
- linux离线安装netstat,在Ubuntu中安装netstat等网络工具
热门文章
- PAT甲级1087 All Roads Lead to Rome (30分):[C++题解]dijkstra求单源最短路综合、最短路条数、保存路径
- 上海交通大学乐经良高数手写笔记-多元微积分
- mysql范围查找性能_MYSQL(四)查询性能优化
- 关闭linux远程桌面,[Linux]Ubuntu 16.04 远程桌面(简单暴力)
- matlab求一个方程组的系数矩阵,【求解】matlab求解非齐次方程组,但是系数矩阵是复数,求帮忙...
- dnf mysql数据库密码,CentOS7使用dnf安装mysql的方法
- wpf项目源代码_C# WPF开源控件库:MahApps.Metro
- php大牛额城战笔记,PHP语言大牛开发笔记(8)——MySQL数据库基础回顾[2]
- 简单的html5,简单的HTML5初步入门教程
- oracle 查询各科前3名_2020年山东高校排行榜前3无悬念,山东理工大学省内第17全国250名...