linux shell 单引号 双引号 反引号的区别

一、单引号和双引号

首先, 单引号和双引号,都是为了解决中间有空格的问题。

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

所以下面的结果:
num=3
echo ‘$num’
$num
echo “$num”
3
所以,如果需要在双引号””里面使用这两种符号,需要用反斜杠转义。

二、反引号``

这个东西的用法,我百度了一下,和$()是一样的。在执行一条命令时,会先将其中的 `` ,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,例如:
echo `ls`
会先执行 ls 得到 xx.sh等,再替换原命令为:
echo xx.sh
最后执行结果为
xx.sh
那么,平时我们遇到的把一堆命令的执行结果输出到一个变量中,需要用这个命令替换符括起来,也就可以理解了。
这里又涉及到了一个问题,虽然不少系统工程师在使用替换功能时,喜欢使用反引号将命令括起来。但是根据POSIX规范,要求系统工程师采用的是$(命令)的形式。所以,我们最好还是遵循这个规范,少用``,多用$()

三、小括号,中括号,和大括号的区别

那么,下面又涉及到了一个问题,就是小括号,中括号,和大括号的区别。
先说说小括号和大括号的区别。这两者,实际上是“命令群组”的概念,也就是command group。
( ) 把 command group 放在subshell 去执行,也叫做 nested sub-shell。
{ } 则是在同一个 shell 內完成,也称为 non-named command group。
所以说,如果在shell里面执行“函数”,需要用到{},实际上也就是一个命令群组么。
不过,根据实测,test=$(ls -a)可以执行,但是test=${ls –a}语法上面是有错误的。估计也和上面所说的原因有关。

另外,从网上摘录的区别如下:
A,()只是对一串命令重新开一个子shell进行执行
B,{}对一串命令在当前shell执行
C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D,()最后一个命令可以不用分号
E,{}最后一个命令要用分号
F,{}的第一个命令和左括号之间必须要有一个空格
G,()里的各命令不必和括号有空格
H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令

两个括号(()),是代表算数扩展,就是对其包括的东西进行标准的算数计算——注意,不能算浮点数,如果需要算浮点数,需要用bc做。

至于中括号[ ],感觉作用就是用来比较的。比如放在if语句里面,while语句里面,等等。
这里引出来[..]和[[…]]的区别:(摘自网上,实测证实):使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如,&&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错。

转自  http://blog.sina.com.cn/s/blog_96b8a15401013g0v.html

linux shell 单引号 双引号 反引号的区别

时间: 2024-08-06 14:16:41

linux shell 单引号 双引号 反引号的区别的相关文章

Linux shell 单引号和双引号

在编写shell脚本的时候经常会用到引号,有些时候却老是忘记单引号和双引号之间的区别, 所以就整理一下供以后脑子不好使了的时候前来复习一下.首先说下他们的共同点: 好像就只有 一个,就是它们都可以用来界定一个字符串,这个没什么好解释的,真正需要记住的是它们区别, 所以经过整理后,它们的区别主要包括: 1).单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原 封不动的使用,唯一需要注意的点是不允许引用自身: 2).双引号属于弱引用,它会对一些被引起来的字符进行特殊处理,

linux下 单引号 双引号 反引号的区别

" '' `` 单引号 '' 相当于吧里面的内容直接输出.并不会考虑里面是否有变量命令等双引号 "" 只认变量 命令会直接输出反引号 `` 两种都认   实例: a="hello" [localhost.localdomain 10:16:09]$echo 'echo %a'echo %a [localhost.localdomain 10:15:19]$echo "echo $a"echo hello [localhost.local

js “+” 连接字符串&amp;数字相加 数字相加出现多位小数 函数调用单引号双引号嵌套和转义字符的使用

一.机制 JavaScript中,加号不仅表示相加还表示字符串连接 当加号两边存在字符串时,加号代表连接,实际上是将两侧都转为了字符串,如 "1" + 1 = "11" 而当加号两侧都是数字的时候,则表示两个数相加,如 1 + 1 = 2 这是JavaScript中的隐式类型转换 txtName.innerHTML是字符串 所以当想要两个数字相加,保险起见:用下面方法: parseInt($("#txtNum1").val()) + parseI

js中 单引号 双引号 参数问题 单引号 替换成 \&#39; 双引号 替换成 \&quot; 等

.replace(/\'/g, "\\'")    ->  ' 替换成  \' .replace(/\"/g, "\\\"")  ->  " 替换成\" 注:适用于 onclick='Test("数字双音\"")'  这种写法 .replace(/\"/g, """)  ->" 替换成 " 注:适用于onclick=&q

php 单引号 双引号 ,php字符串/ hmtl / 数据库显示/ 及php的几个转化函数

* 以单引号为定界符的php字符串,支持两个转义\'和\\* 以双引号为定界符的php字符串,支持下列转义(\'会直接输出\' ,也会转义 \\):    \n 换行(LF 或 ASCII 字符 0x0A(10))     \r 回车(CR 或 ASCII 字符 0x0D(13))     \t 水平制表符(HT 或 ASCII 字符 0x09(9))     \\ 反斜线     \$ 美元符号     \" 双引号     \[0-7]{1,3}               此正则表达式序列

shell-4.shell双引号,单引号,反引号,反斜杠

shell 双引号,单引号,反引号,反斜杠<1>.双引号"":允许通过$符号引用其他变量值<2>.单引号'':    禁止引用其他变量值,$视为普通字符<3>.反引号``: 将命令执行结果输出<4>.反斜杠\ : 处理特殊字符,处理转义字符,例如:\t  \n  \r 1.双引号""    ·使用双引号可引用除$,`,\,字符外的任意字符或字符串[[email protected] ~]# name="yua

有关变量定义的单引号双引号无引号区别总结

单引号: 可以说是所见即所得:即将单引号内的所有内容都原样输出,或者描述为单引号里面看到的是什么就会输出什么. 双引号: 把双引号内的所有内容都输出出来:如果内容中有命令(要反引下),变量,特殊转移符等,会先把变量,命令转义字符解析出结果,然后在输出最终内容来. 无引号: 把内容输出出来,会将含有空格的字符串视为一个整体输出,如果内容中有命令,变量等,会先把变量,命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等

单引号 双引号 定界符 之间区别

双引号解析变量,单引号不解析变量,定界符解析变量双引号中直接输出单引号,单引号中直接输出双引号,单引号输出单引号需要转义,双引号输出双引号需要转义.(转义字符"\")双引号输出变量名需要转义('\'); 例: //双引号 $a="123";$b="456";$c=$a.$b;echo "\$c";die;输出结果是变量名$c echo $c; 输出结果是$c=123456: $a='jjjjjj';$b="aaa $

ASP,VB,JAVASCRIPT 拼HTML时多层单引号双引号嵌套用法,实用(转载)

s.html中的单引号.双引号及其转义使用(转) 收藏   在js中对相关字符做判断或取值,或者拼HTML赋值的时候很多情况下都会用到这些,也是我刚刚遇到的问题,通过参考下面的这篇文章,一切都解决了,摘抄下来做个笔记!呵呵... ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<input value="Test" type="button" onclick="alert(""OK"&q