原文:http://blog.csdn.net/woshizhangliang999/article/details/50132265

3.描述linux shell中单引号、双引号及不加引号的简单区别(记时2分钟)

简要总结:

单引号:

可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。

双引号:

把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。

不加引号:

不会将含有空格的字符串视为一个整体输出, 如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用。

实例演示:

例1:

[root@oldboy oldboy]# echo '`date`'

#→单引号时看到啥就显示啥

`date`

[root@oldboy oldboy]# echo "`date`"

#→双引号时如果里面是变量,会先把变量解析成具体内容在显示

Sat Oct 29 18:02:59 CST 2011

[root@oldboy oldboy]# echo `date`

#→对于连续的字符串等内容一般不加引号也可,加双引号一般比较保险,推荐

Sat Oct 29 18:03:08 CST 2011

例2:

[root@oldboy ~]# oldboy=testchars  #→创建一个变量

[root@oldboy ~]# echo $oldboy   #→不加引号,显示一个变量解析后的内容

testchars

[root@oldboy ~]# echo '$oldboy' #→单引号,显示一个变量本身

$oldboy

[root@oldboy ~]# echo "$oldboy" #→双引号,显示一个变量内容,引号内可以是变量、字符串等

testchars

过滤字符串测试:

[root@oldboy ~]# cat >grep.log

testchars

oldboy

[root@oldboy ~]# cat grep.log

testchars

oldboy

[root@oldboy ~]# grep "$oldboy" grep.log

testchars

[root@oldboy ~]# grep '$oldboy' grep.log

[root@oldboy ~]# grep $oldboy grep.log

testchars

[ett@oldboy ~]$ cat >oldboy.log

\"

[ett@oldboy ~]$ cat oldboy.log

\"

[ett@oldboy ~]$  grep '\"' oldboy.log

\"

提示:有关单引号和双引号的区别详细内容请参考《老男孩linux运维实战培训-shell编程精讲》

拓展:awk调用shell变量问题

[ett@oldboy ~]$ ett=123

[ett@oldboy ~]$ awk 'BEGIN {print '$ett'}'

123

[ett@oldboy ~]$ awk 'BEGIN {print "$ett"}'

$ett

[ett@oldboy ~]$ ett='abc'

[ett@oldboy ~]$ awk 'BEGIN {print "$ett"}'

$ett

[ett@oldboy ~]$ awk 'BEGIN {print '$ett'}'

[ett@oldboy ~]$ awk 'BEGIN {print "'$ett'"}'

abc

提示:awk调用shell变量在http://oldboy.blog.51cto.com/2561410/760192一文有体现。

详细描述见:

老男孩linux运维实战培训-单引号和双引号的区别详细说明

老男孩linux运维实战培训-shell编程精讲

(转)linux shell单引号、双引号及无引号区别的更多相关文章

  1. linux shell 单双引号区别

    简要总结: 单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看见的是什么就会输出什么. 双引号: 把双引号内的内容输出出来:如果内容中有命令,变量等,会先把变量,命令解析 ...

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

    一.单引号和双引号 首先, 单引号和双引号,都是为了解决中间有空格的问题. 因为空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行就会报错.为 ...

  3. Linux Shell编程,双括号运算符(())

    双括号运算符是shell非常强大的扩展. 这里简要介绍两种使用方式: 1.条件判断 跟在if.while.until,for等需要逻辑条件的命令后,进行逻辑判断 if(( expr));then … ...

  4. Linux shell 内部命令与外部命令有什么区别以及怎么辨别

    内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留 ...

  5. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  6. Linux Shell中单引号、双引号、反引号的区别【转载】

    linux shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符` 1. 单引号 ( '' )# grep Susan phonebook Sus ...

  7. linux shell中单引号、双引号、反引号、反斜杠的区别

    摘自http://www.jb51.net/article/33495.htm 1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg 403-212- ...

  8. Shell中的单引号(‘)双引号(”)和反引号(·)

    在bash中,$.*.?.[.].’.”.`.\.有特殊的含义.类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统 ...

  9. shell中的双引号,单引号,反引号

    在shell中引号分为三种:单引号,双引号和反引号. 单引号 ‘ 由单引号括起来的字符都作为普通字符出现.特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释.单引号用于保持引号内所有字 ...

随机推荐

  1. 20169219 NMap+Wireshark实验报告

    Tcpdump介绍 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中 ...

  2. POJ - 1328 Radar Installation(贪心区间选点+小学平面几何)

    Input The input consists of several test cases. The first line of each case contains two integers n ...

  3. eclipse中的项目无法在build/classes目录下生成.class字节码

    转载 原文链接:https://www.cnblogs.com/iceblow/p/6648715.html 1.首先确定project->Build Automatically是否勾选上:  ...

  4. 正则表达式回溯-导致CPU偏高

    最近了解了下有关正则表达式回溯的内容,想想就写下来,方便自己. 正则表达式匹配算法是建立在正则表达式引擎的基础上的,目前有两种引擎:DFA(确定型有穷自动机)和NFA(不确定型有穷自动机).这两种引擎 ...

  5. c++基类指针指向继承类调用继承类函数

      类里面重载运算符>>, 需要使用友元函数,而友元函数,不能作为虚函数. 所以,基类指针无法直接调用继承类里重构的 >>  ; 使用类转换,能解决掉,基类指针 调用 继承类 ...

  6. IO模型《一》IO模型介绍

    IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步.异步.阻塞.非阻塞 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞 ...

  7. django 重写User表增加字段设置

    models中: from django.contrib.auth.models import AbstractUser lass User(AbstractUser): mobile = model ...

  8. 解决vs code中golang插件依赖安装失败问题

    解决vs code中golang插件依赖安装失败问题 Installing github.com/nsf/gocode SUCCEEDED Installing github.com/uudashr/ ...

  9. C++_基础5-内存模型

    C++为在内存中存储数据提供了多种选择: 可以选择数据保留在内存中的时间长度(存储持续性): 程序的哪一部分可以访问数据(作用域和链接): 可以使用new来动态地分配内存:定位new运算符提供了这种技 ...

  10. C++_代码重用3-私有继承

    使用包含:易于理解,类声明中包含表示被包含类的显式命名对象,代码可以通过名称引用这些对象: 使用继承:将使关系更抽象,且继承会引起很多问题,尤其是从多个基类继承时. 私有继承所提供的特性确实比包含多. ...