博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Bash, 双引号,单引号,感叹号
阅读量:6711 次
发布时间:2019-06-25

本文共 2392 字,大约阅读时间需要 7 分钟。

hot3.png

当要引用一个变量的值时,一般推荐使用双引号。使用双引号除了变量名[2]前缀($)、后引符(`)和转义符(\)外,会使shell不再解释引号中其它所有的特殊字符。[3] 用双引号时$仍被当成特殊字符,允许引用一个被双引号引起的变量("$variable"), 那也是说$variable会被它的值所代替。

用双引号还能使句子不被分割开. [4] 一个参数用双引号引起来能使它被看做一个单元,这样即使参数里面包含有空白字符也不会被shell分割开了。

单引号(' ')和双引号类似,但它不允许解释变量引用,因此,在单引号内的字符$的特殊意思无效了。在单引号内,除了字符',每个特殊字符都只是字面的意思。单引号(全局引用)比双引号(部分引用)更严格的处理引用部分。

感叹号(!)称之为事件指示器 (event designator) ,用以对.bash_history中的某个命令行条目的引用。

!!     引用上一条命令。这是 `!-1' 的同义词。

!string
引用最近的以 string 开始的命令。
!?string[?]

引用最近的包含 string 的命令。尾部的 ? 可以被忽略,如果 string 之后紧接着一个新行符。

在命令行上,把感叹号"!"放在双引号里执行命令会出错(译者注:比如说:echo "hello!"). 因为感叹号被解释成了一个历史命令. 然而在一个脚本文件里,这么写则是正确的,因为在脚本文件里Bash的历史机制被禁用了

root@test-desktop:/home/James/mypro/Linux-Pro/Network# !!

ls

hostname_to_ip  hostname_to_ip.c  hostname_to_ip.c~  ip_to_hostname  ip_to_hostname.c  ip_to_hostname.c~  Makefile  Makefile~

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo "$CLASSPATH"

.:/lib:/opt/jdk1.5.0_22/jre/lib:

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo '$CLASSPATH'

$CLASSPATH

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo "$(ls)"

hostname_to_ip

hostname_to_ip.c

hostname_to_ip.c~

ip_to_hostname

ip_to_hostname.c

ip_to_hostname.c~

Makefile

Makefile~

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo '$(ls)'

$(ls)

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo "!"

-bash: !: event not found

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo '!'

!

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo !

!

root@test-desktop:/home/James/mypro/Linux-Pro/Network# ls

hostname_to_ip  hostname_to_ip.c  hostname_to_ip.c~  ip_to_hostname  ip_to_hostname.c  ip_to_hostname.c~  Makefile  Makefile~

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo "!"

-bash: !: event not found

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo "!!"

echo "ls"

ls

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo "$(!!)"

echo "$(echo "ls")"

ls

root@test-desktop:/home/James/mypro/Linux-Pro/Network# ls

hostname_to_ip  hostname_to_ip.c  hostname_to_ip.c~  ip_to_hostname  ip_to_hostname.c  ip_to_hostname.c~  Makefile  Makefile~

root@test-desktop:/home/James/mypro/Linux-Pro/Network# echo "$(!!)"

echo "$(ls)"

hostname_to_ip

hostname_to_ip.c

hostname_to_ip.c~

ip_to_hostname

ip_to_hostname.c

ip_to_hostname.c~

Makefile

Makefile~

root@test-desktop:/home/James/mypro/Linux-Pro/Network# 

转载于:https://my.oschina.net/u/158589/blog/68042

你可能感兴趣的文章
Alibaba Cloud Network Attached Storage Now Available
查看>>
Schema命名空间示例
查看>>
ASP.NET Web API路由系统:路由系统的几个核心类型
查看>>
XSKY加盟“未来就绪企业云联盟”
查看>>
CloudCC:如何将CRM变成企业发展战略
查看>>
某研究院dell存储 raid5 XFS磁盘阵列数据丢失恢复案例
查看>>
Java 访问 C++ 方法 JavaCPP
查看>>
关注数据中心“减负” WD助力绿色存储
查看>>
中国人工智能学会通讯——AI如何深度应用于消费金融的风控决策 1.2 在人工智能的业务实践中,长尾数据和特征能很大提升信用评分的准确性。...
查看>>
如何对有双因子认证站点进行钓鱼攻击?
查看>>
数据到底怎么用?运营报告的6个必备要素
查看>>
长见识了!5G竟然这样“改变社会”
查看>>
威胁情报 = 数据 + 人
查看>>
西门子与新创事业合作进军区块链微电网电力交易市场
查看>>
由学习《软件设计重构》所想到的代码review(一)
查看>>
业内人的“针砭时弊”:AI医疗界的3大乱象以及如何评价医学人工智能的成果?...
查看>>
美国科技股遭抛售 独立分析师为苹果鸣不平
查看>>
南通电信推广定制化云服务
查看>>
去芜存精:如何选择最优质的CRM软件研发商?
查看>>
为精简成本 诺基亚将在芬兰本土进行裁员
查看>>