空格对于linux的shell是一种很典型的分隔符,所以给变量赋值的时候中间不能够有空格。而单引号和双引号,都是为了解决中间有空格的问题。比如string1=this is a string,这样执行就会报错。为了避免这个问题,因此就产生了单引号和双引号。

单引号将剥夺其中的所有字符的特殊含义,阻止对所有字符的转义, 将所有的字符看做其字面的意思。而双引号会处理字符串中的'$'(参数替换),'``' or '()'(命令替换),'\' 转义字符 和算数等。所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`(我不是单引号)。

eg:

参数替换符$:

[~]$Name="eabbefh"

[~]$echo " Hello, $Name"

 Hello, eabbefh
[~]$Name="eabbefh"

[~]$echo 'Hello, $Name'

Hello, $Name

命令替换符'$' or '``'(在美式键盘上,`是ESC下面的那个键):

echo$(ls)来说明整个替换过程:shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令echo $(ls)中的$(ls)位置,即替换了$(ls),再执行echo命令。如下:

[~/ltetools/doc]$ls
FAQ.mht* LteBasebandTutorial.mht* LteObservabilityTutorial.mht*
[~/ltetools/doc]$echo $(ls)
FAQ.mht LteBasebandTutorial.mht LteObservabilityTutorial.mht
NodeID=`egrep -i \(^RBS${NodeID}\)\|\(^${NodeID}\) ${IPLib} | gawk '{print $2}'` 
NodeID=$(egrep -i \(^RBS${NodeID}\)\|\(^${NodeID}\) ${IPLib} | gawk '{print $2}')

以上两条命令效果相同。

Shell中的空格和引号的更多相关文章

  1. shell中的空格【转载】

    1.定义变量时, =号的两边不可以留空格. eg: gender=femal————right gender =femal———–wrong gender= femal———–wrong gender ...

  2. shell 中的三种引号的作用

    1. 单引号(' ') 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用. 2. 双 ...

  3. Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别

    转载自 https://blog.csdn.net/x1269778817/article/details/46535729 参考: https://stackoverflow.com/questio ...

  4. (转)shell中各种括号的作用()、(())、[]、[[]]、{}

    shell中各种括号的作用().(()).[].[[]].{} 原文:http://www.jb51.net/article/60326.htm http://blog.csdn.net/good_h ...

  5. shell中$(( )) 与 $( ) 还有${ }的区别

    http://blog.chinaunix.net/uid-14351756-id-2820651.html $( ) 与 ` ` (反引号)在 bash shell 中,$( ) 与 ` ` (反引 ...

  6. 转 shell中$(( )) 与 $( ) 还有${ }的区别

    原文 http://blog.zol.com.cn/2322/article_2321763.html $( ) 与 ` ` (反引号)在 bash shell 中,$( ) 与 ` ` (反引号) ...

  7. shell中的$()、${}、$(())、(())

    $( ) 与 ` ` (反引号)在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的. 所谓的命令替换与我们第五章学过的变 ...

  8. shell中命令代换$()与`` 、 变量代换${} 、 整数运算$(( )) 的区别

    命令代换$()与`` . 变量代换${} . 整数运算$(( )) 1.$( ) 与 ` ` (反引号) 在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(comm ...

  9. Linux Shell 中的反引号,单引号,双引号

    反引号在 (`) 键盘的Tab键的上方.1键的左方.在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置.如下,shell会执行反引号中的date命 ...

随机推荐

  1. 使用FIR.im发布自己的移动端APP

    一次很偶然的机会知道FIR.im,这家公司主要的产品就是帮助开发者方便便捷地发布iOS或者Android应用的.今天我就聊聊如何在FIR.im中发布自己的APP,然后让加入UUID的设备通过网页直接下 ...

  2. 使用AFNetWorking读取JSON出现NSCocoaErrorDomain Code=3840的解决方法

    最近在使用AFNetworkWorking读取JSON时,出现了NSCocoaErrorDomain Code=3840的错误.这种错误应该是服务器端返回JSON格式不对造成的.通过Google搜到这 ...

  3. javascript作用域链与原型链有联系吗?

    一般来说,作用域链是针对变量的,js里面大的范围上来说,只有两种作用域,全局作用域和函数内部作用域,如果函数1里面又定义了函数2(一般都是匿名函数), 那么就有了这么一个作用域链全局作用域==> ...

  4. Socket TCP之keepalive

    摘自: http://machael.blog.51cto.com/829462/211989/

  5. java 垃圾回收

    转自:http://www.360doc.com/content/13/0305/10/15643_269388816.shtml

  6. JavaScript 的面向对象

    一.JS 模块包装格式都用过哪些,CommonJS.AMD.CMD.定义一个JS 模块代码,最精简的格式是怎样. js模块化开发的起源. CommonJs原来是叫ServerJs,从名字可以看出是专攻 ...

  7. GOLANG 声明

    GO语言声明关键字 var 声明变量 const 声明常量 type 声明新类型 func 声明函数(方法) package 声明包 interface 声明接口

  8. Android studio Gradle 教程

    一 . Gradle基础:https://segmentfault.com/a/1190000002439306 module下的gradle文件: // 声明是Android程序 apply plu ...

  9. UVALive 3401 彩色立方体

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  10. Toad for Oracle Format Option

    FmtPlus.opt [Qp5FormatterOptions]  Version=252  AssignFavorWrapping=0  AssignAlignment=2  CaseAllowH ...