shell中的单引号和双引号的区别

对于常规的字符串定义变量值应添加双引号,并且等号后不能 有空格,需要强引用的,则需要单引号,需要命令引用的使用反引号。

单引号:所见即所得,即输出时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的什么就输出什么,这成为强引用。

双引号:输出双引号的所有内容;如果内容中有命令(要反引)、变量、特殊转义,会先把变量、命令、转义字符解析出结果,然后在输出最终内容,这称为弱引。

反引号:一般用于命令,执行的时候命令会被执行,相当于$(),赋值和输出都要用反引号引起来。

[[email protected] ~]# time=date
[[email protected] ~]# echo $time
date
[[email protected] ~]# time=`date`
[[email protected] ~]# echo $time
2019年 08月 01日 星期四 08:14:11 CST
[[email protected] ~]# time="`date`"
[[email protected] ~]# echo $time
2019年 08月 01日 星期四 08:21:15 CST
[[email protected] ~]# time=‘`date`‘
[[email protected] ~]# echo $time
`date`
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# echo `$PATH`
-bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin: 没有那个文件或目录

[[email protected] ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# echo ‘$PATH‘
$PATH
[[email protected] ~]# time="现在是北京时间:`date`"
[[email protected] ~]# echo $time
现在是北京时间:2019年 08月 01日 星期四 08:24:25 CST
[[email protected] ~]# time=‘现在是北京时间:`date`‘
[[email protected] ~]# echo $time
现在是北京时间:`date`
[[email protected] ~]# time="现在是北京时间:\b`date`"
[[email protected] ~]# echo $time
现在是北京时间:\b2019年 08月 01日 星期四 08:25:19 CST
[[email protected] ~]# time=‘现在是北京时间:`date`‘
[[email protected] ~]# echo $time
现在是北京时间:`date`
其实在shell中 echo的参数e能够解析转义字符,在单引或者双引的情况下都能够解析。-e 启用下列反斜杠转义的解释

[[email protected] ~]# time="我们都是\n好孩子"
[[email protected] ~]# echo -e $time
我们都是
好孩子
[[email protected] ~]# time=‘我们都是\n好孩子‘
[[email protected] ~]# echo -e $time
我们都是
好孩子

不用“”在shell解释器中能否转义,需要进一步验证,建议代码中使用“”定义转义符。

原文地址:https://www.cnblogs.com/anttech/p/11247423.html

时间: 2024-10-23 21:35:11

shell中的单引号和双引号的区别的相关文章

linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)

" "(双引号)与 ' '(单引号)的区别  你在shell prompt后面敲打键盘.直到按下enter的时候,你输入的文字就是command line了,然后shell才会以进程方式执行你所提交的命令.但是,你又可知道:你在command line输入的每一个文字,对shell来说,有什么类别之分呢? 简单而言,command line的每一个charactor分为如下两种:   *literal:也就是普通纯文字,对shell来说没有特殊功能.   *meta:对shell来说,

linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别

一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免这个问题,因此就产生了单引号和双引号.他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外.所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`. 所以下面的结果:num=3echo '$num'$numecho "$n

linux shell中,单引号、 双引号,反引号(``),$()的区别

一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行会报错.为了避免这个问题,因此就产生了单引号和双引号.他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中 的'$'(参数替换)和'`'(命令替换)是例外.所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`. 看下面的例子:num=3echo ‘$num’$numecho “$nu

shell中的单引号、双引号、反引号

在shell中引号分为三种:单引号,双引号和反引号. 单引号 ' 由单引号括起来的字符都作为普通字符出现.特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释.单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号.(注意是所有,只是单引号本身不能够出现在其中). 例如: $ string='$PATH' $ echo $string $PATH $ 可见$保持了其本身的含义,作为普通字符出现. 双引号 " 双引号用于保持引号内所有字符的字面

PHP中的单引号跟双引号的区别

<布尔教育_燕十八_PHP基础巩固.033.单双引号区别> 不同点: 单引号只能解析转义字符“\'”和“\\”,其他的原样输出. 输出结果: 双引号能够解析以上这些转义字符: 单引号解释速度比双引号快. 单引号不解析变量: 输出结果: 为什么单引号解释比双引号快? 因为单引号遇到变量时不去判断这个值是不是变量?需不需要去调用变量,而是直接输出,所以他的速度自然就快了.

C语言中的单引号和双引号含义

C语言中的单引号和双引号含义迥异, 用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值,因此,采用ASCII字符集的编译器而言,'a'的含义与0141或97严格一致. 而用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符'\0'初始化.

js、html中的单引号、双引号及其转义使用

js.html中的单引号.双引号及其转义使用在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<input value="Test" type="button" onclick="alert(""OK"");" />IE提示出错后,再漫不经心地改为:<input value="Test&

辛星和你彻底解读单引号和双引号的区别

本以为PHP中单引号的区别这么简单而基础的知识应该是每个PHPer都知道的,结果还是有很多PHPer不清楚,这一点我也非常痛心,痛定思痛,于是,我们就来彻底搞定PHP中的单引号和双引号的差别,其实很简单的. 当PHP解析双引号的时候,会自动的被分析器分析一次,进行一次到字符串的转化,因此如果双引号的 字符串中有变量,会被自动用变量去替代,比如如下代码: <?php $xin = "辛星"; echo "$xin"; echo '$xin'; 上述代码的输出如下

[转载]PHP效率计:从引号开始(单引号、双引号效率区别)

原文地址:http://blog.sina.com.cn/s/blog_640b03390100sham.html 一直以来,程序的执行效率就是人们所关注的,在PHP中也不例外,从最简单的引号,也在思考他的效率.我们特别做了实验,我们自称这个实验可能前无古人,后无来者.我们的实验是借助最初级的实验方法:累积法和多次实验求平均值. 实验一:在普通情况下的效率我们的实验是5000次执行10000个字节的文件,获得解析过程中的速度.首先,本实验特别规定一个单位,这是为了更好地表示以及排除计算机本身效率