Unix Shell中单引号、双引号字符、反斜杠、反引号的使用[转]
在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行;
对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之。
如下,当在命令行中输入:
echo *
child.sh env_variable father.sh param.sh profile.sh 125017.sh
默认会将当前文件夹下的所有文件都打印出来,但我们需要的是输出一个“*”。
可以以这样的方式让shell不去解释星号(*):
echo "*"
*
下面是shell引用类型
------------------------------
"" 双引号
'' 单引号
` 反引号
\ 反斜线
------------------------------
1.双引号
使用双引号,可引用除了字符$、`、\外的任意字符或字符串。
例如:
STR="MX2 is better than MI2"
echo "$STR"
MX2 is better than MI2
也可以去掉双引号:
echo $STR
MX2 is better than MI2
双引号可以使具有特殊含义的词失去其原本的意义,如下:
cal
December 2012
Sun Mon Tue Wed Thu Fri Sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
但是,当我们将cal命令赋给一个变量,如下:
CALENDAR="cal"
echo $CALENDAR
cal
这里,双引号是cal命令失去了原有的显示日历的功能;这里双引号类似于转义字符。
比如DB2中,我们要将这样的字符串('1','2')添加到表的一个字段中,那么我们将怎么写呢?
db2 => select '1','2' from sysibm.sysdummy1
1 2
- -
1 2
从这里看到,db2将'1','2'认为是2个字符串,这是因为单引号在数据库中有着特殊的含义。
我们要将其转义,然后才可以添加到表中,这个起着转义字符呢就是单引号('),如下:
db2 => select ''1','2'' from sysibm.sysdummy1
SQL0104N 在 "select ''" 后面找到异常标记
"1','2''"。预期标记可能包括:"<space>"。 SQLSTATE=42601
这里除了第一个单引号和最后一个单引号对应之外,其余的都未进行转义,所以报错,
下面是正确的写法:
db2 => select '''1'',''2''' from sysibm.sysdummy1
1
-------
'1','2'
在DB2 400上也是同样的写法:
select '''1'',''2''' from qsys2/qsqptabl
....+....1....
Constant value
'1','2'
******** End of data ********
如果在字符才中有双引号的话,可以使用反斜杠"\"来进行转义,如下:
STR="\"LENOVO"
echo "my PC is made by $STR"
my PC is made by "LENOVO
如果将$符号转义了,那么STR变量将失去意义:
echo "my PC is made by \$STR"
my PC is made by $STR
2.单引号
单引号与双引号类似,不同的是shell会忽略任何引用值,即屏蔽的单引号内的特殊字符的原本含义。
如:echo ‘my name is $LOGNAME’其结果为:my name is $LOGNAME
3.单引号和双引号的区别
单引号‘’:取消除单引号以外的任何字符的特殊含义。
如:echo ‘my name is $name’其结果为:my name is $name,此时$只作为一个普通字符使用了。
双引号“”:取消除双引号、$号以及_号以外的所有字符的特殊含义
单引号是强引用,引号里的值是什么,变量的值就是什么;
双引号是弱引用,引号里的值若再包含变量,那在赋值的时候,所有这些变量就被立即替换了。
例如:
echo "who am i:$LOGNAME" 结果:who am i:yeexun
echo "who am i:'$LOGNAME'" 结果:who am i:'yeexun'
echo "who am i:"$LOGNAME"" 结果:who am i:yeexun
echo 'who am i:$LOGNAME' 结果:who am i:$LOGNAME
echo 'who am i:"$LOGNAME"' 结果:who am i:"$LOGNAME"
echo 'who am i:'$LOGNAME'' 结果:who am i:yeexun
4.反引号
反引号(`)用于设置系统命令输出到变量,shell认为反引号中的内容是一个系统命令,
所以将会执行之:
echo `date`
Mon Dec 24 16:06:55 CST 2012
这和直接输入date命令是一样的:
date
Mon Dec 24 16:07:12 CST 2012
若输入一个非系统命令,则shell不认识此命令,将会报错:
echo `DATE`
ksh: DATE: not found
关于date命令,参照:http://blog.csdn.net/bobo12082119/article/details/8426831
5.反斜杠
反斜杠起的作用是将一些特殊字符按原样输出,这些特殊字符有:$、*、`、+、^、&、|、"、?。
例如:echo *
将当前目录下的文件名和目录名都列出来。
echo \*
*
而使用反斜杠转义之后,就输出了星号。
Unix Shell中单引号、双引号字符、反斜杠、反引号的使用[转]的更多相关文章
- Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍
Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示 ...
- sed命令替换字符包含斜杠\,引号的处理方法
在字符替换中,可能会遇见引号,“/”等的替换,这时应该注意,sed的命令原型是: sed -i "s/oldstring/goalstring/g" file 如果一个路径是da ...
- shell脚本特殊符号——单引号、双引号、反引号、反斜杠
1. 单引号 ( '' ) 被单引号用括住的内容,将被视为单一字串. 2. 双引号 ( " " ) 被双引号用括住的内容,将被视为单一字串.双引号只要求忽略大多数,具体说,括在双 ...
- 每日linux命令学习-引用符号(反斜杠\,单引号'',双引号"")
引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(’‘),双引号(“”). 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要 ...
- linux shell中单引号、双引号、反引号、反斜杠的区别
摘自http://www.jb51.net/article/33495.htm 1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg 403-212- ...
- Shell中单引号、双引号、反引号、反斜杠的区别
1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg -- Susan Topple -- 如果我们想查找的是Susan Goldberg,不能直接使 ...
- Linux下Shell脚本字符串单引号、双引号、反引号、反斜杠的作用和区别
一.单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单引号(对单引号使用转义符后也不行) ...
- shell脚本中的反引号,单引号,双引号与反斜杠
转自:http://blog.sina.com.cn/s/blog_6561ca8c0102we2i.html 反引号位 (`)经常被忽略,而且容易与单引号弄混.它位于键盘的Tab键的上方.1键的左方 ...
- Linux Bash环境下单引(')、双引号(")、反引号(`)、反斜杠(\)的小结
在bash中,$.*.?.[.].’.”.`.\.有特殊的含义.类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统 ...
随机推荐
- 《ASP.NET MVC4 WEB编程》学习笔记------UrlHelper
HtmlHelper帮助我们生成Html标记代码:UrlHelper帮助我们生成URL链接地址 我们学习一下UrlHelper帮助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC ...
- ZOJ 2315
---恢复内容开始--- http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1315 这个题目比较难以看懂,我也是看网上的题目意思才 ...
- static总结
[本文链接] http://www.cnblogs.com/hellogiser/p/static.html [分析] [内存分配方式] 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局 ...
- linux shell脚本守护进程监控svn服务
最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...
- C++调用Object-C界面
在C++代码中想调用显示一个IOS界面,使用NSNotificationCenter 1.在界面中注册消息 [[NSNotificationCenter defaultCenter] addObse ...
- VS添加lib库
#pragma comment(lib,"opengl32.lib")
- July 28th, Week 31st Thursday, 2016
Time is a bird flying into eternity. 时间是一只永远在飞翔的鸟儿. Time waits for nobody. Vitality shows in not onl ...
- discuz 学习
一.Discuz首页“今日”“昨日”“欢迎新会员”等文字删除添加 搜索templeta/default/forum/discuz.htm (使用非默认模版的请修改当前使用模版的discuz.htm ...
- 引水入城(codevs 1066)
题目描述 Description 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政 区划十分特殊,刚好构成一个N行M列的矩形,如上图所示,其中每个格子都代表一座城 市,每座 ...
- makefile_1(初识make)
Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是: $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件. LIBS = -lmCFLAGS = - ...