把内容输出出来,可能不会将含有空格的

说一下单引号、双引号和不加引号区别

  • 总结说明:

单引号:

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

双引号:

特殊符号,有了原本的特殊意思,$LANG  $() ``

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

双引号内命令或变量的写法为 `命令或变量`或$(命令或变量)。

无引号:

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

范例:

##单引号

1
2
[root@oldboy32-vm1 ~]# echo '$LANG $PATH $(whichawk) {a..d}'
$LANG $PATH $(which awk) {a..d}

##双引号

1
2
[root@oldboy32-vm1 ~]# echo "$LANG $PATH$(which awk) {a..d}"
en_US.UTF-8/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin /bin/awk{a..d}

##不加引号

1
2
3
4
5
6
[root@oldboy32-vm1 ~]# echo $LANG $PATH $(whichawk) {a..d}
en_US.UTF-8/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin /bin/awka b c d
[root@oldboy32-vm1 ~]# ls *.txt
a.txt cn.txt  oldboy_jia.txt  oldboy.txt oldgirl.txt  zh.txt
[root@oldboy32-vm1 ~]# ls "*.txt"
ls: cannot access *.txt: No such file or directory

工作中多用双引号,除非你有明确的特殊的需求。

  • 实践演示

实例1:经过反引号的`date`命令,命令行测试

1
2
3
4
5
6
[root@Oldboyedu ~]$ echo '`date`'         #### 单引号时看到啥就显示啥。
`date`
[root@Oldboyedu ~]$ echo "`date`"        #### 双引号,如果里面是变量,会先把变量解析成具体内容再显示
Sun Mar 22 09:43:13 CST 2015
[root@Oldboyedu ~]$ echo `date`         #### 对于连续的字符串等内容一般不加引号也可,加双引号比较保险,推荐。
Sun Mar 22 09:43:19 CST 2015

实例2:脚本中变量定义后,调试时测试

1
2
3
4
5
6
7
[root@Oldboyedu ~]$ wxr=testchars           ###创建一个不带引号的变量
[root@Oldboyedu ~]$ echo $wxr             ###不加引号,显示一个变量解析后的内容
testchars
[root@Oldboyedu ~]$ echo '$wxr'           ###单引号,显示一个变量本身
$root
[root@Oldboyedu ~]$ echo "$wxr"           ###双引号,一个变量内容,引号内可以是变量、字符串等
testchars

实例3:脚本重定义变量测试

1
2
3
4
5
6
7
[root@Oldboyedu ~]$ echo $wxr
[root@Oldboyedu ~]$ wxr=this is testchars    ###不加引号无法定义。shell会把 is解释成命令。
-bash: is: command not found
[root@Oldboyedu ~]$ wxr="this is testchars"
[root@Oldboyedu ~]$ echo $wxr
this is testchars

结论:一般应用时,对于变量的定义,我们一般加双引号。

实例4:grep过滤字符串例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@Oldboyedu ~]$ cat >grep.log<<EOF
> testchars
> wxr
> wxrlyy
> EOF
[root@Oldboyedu ~]$ cat grep.log
testchars
wxr
wxrlyy
[root@Oldboyedu ~]$ wxr=testchars
[root@Oldboyedu ~]$ echo $wxr
testchars
[root@Oldboyedu ~]$ grep "$wxr" grep.log
testchars
[root@Oldboyedu ~]$ grep '$wxr' grep.log
[root@Oldboyedu ~]$ grep $wxr grep.log
testchars

实例5:grep过滤双引号(转义)例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@Oldboyedu ~]$ cat >wxr.log<<EOF
> "test"
> test
> EOF
[root@Oldboyedu ~]$ cat wxr.log
"test"
test
[root@Oldboyedu ~]$ grep " wxr.log         ####直接按ctrl+d或ctrl+c 取消执行命令 
> -bash: unexpected EOF while looking for matching `"'
-bash: syntax error: unexpected end of file
[root@Oldboyedu ~]$ grep " wxr.log
> ^C                                               #### è停在这里等待输入
[root@Oldboyedu ~]$ grep \" wxr.log           
"test"

实例6:特殊例子:命令行带空格字符串可以不加引号。可以不加引号的例子。

1
2
3
4
5
6
7
[root@Oldboyedu ~]$ echo I am wxr >>wxr.txt
[root@Oldboyedu ~]$ cat wxr.txt
I am wxr
[root@Oldboyedu ~]$ echo "I am wxr.test" >>wxr.txt
[root@Oldboyedu ~]$ cat wxr.txt
I am wxr
I am wxr.test

结论:虽然不加引号可以追加内容到oldboy.txt中,生产环境中,我们习惯用""双引号替代。

实例7:特殊例子:awk调用shell变量涉及引号例子

1
2
3
4
5
[root@Oldboyedu ~]$ ett=123
[root@Oldboyedu ~]$ awk 'BEGIN {print '$ett'}'
123
[root@Oldboyedu ~]$ awk 'BEGIN {print "$ett"}'
$ett

###提示:以上结果正好和前面的结论相反,这是awk调用shell变量的特殊用法。

1
2
3
4
5
6
7
8
9
[root@Oldboyedu ~]$ ett='abc'
[root@Oldboyedu ~]$ echo $ett
abc
[root@Oldboyedu ~]$ awk 'BEGIN {print "$ett"}'
$ett
[root@Oldboyedu ~]$ awk 'BEGIN {print '$ett'}'
[root@Oldboyedu ~]$ awk 'BEGIN {print "'$ett'"}'
abc

##提示:这个例子特殊了一点。有关awk调用shell变量参考:

一道实用linux运维问题大的9钟shell解答方法。

http://oldboy.blog.51cto.com/2561410/760192

  • 总结论

  1. 很多时候,总结的结论未必适合所有情况。但是,总结小结论,便于我们学习知识和对知识的深刻理解,因此推荐大家多做总结。

  2. 不要太纠结于结论,结论毕竟不是真理,知识我们学习过程的产物。就像数学里的平行线一样,在初中定义就是不相交的两条直线就是平行线,到了高中这个结论就是错的了。

转载于:https://blog.51cto.com/dakaige517/1922530

单引号、双引号和不加引号区别相关推荐

  1. ajax post 传参数加引号和不加引号的区别

    1.前言 用ajax技术,type:post,data:参数列表.参数列表就是一个JSON数据,但key可以加引号,也可以不加引号,那总有区别的. 2.区别 var d2 = "two&qu ...

  2. linux给变量加单引号,单引号、双引号和不加引号区别

    把内容输出出来,可能不会将含有空格的 说一下单引号.双引号和不加引号区别总结说明: 单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么. 双引号: ...

  3. echo命令 单引号,双引号,不加引号和反引号 的区别

    不加引号:字符串原样输出,变量会被替换.(根双引号一样,唯一的不同在于 \ 和 空格) 单引号:引号里面的内容会原封不动的显示出来(很简单,不做解释) 双引号:里面的特殊符号会被解析,变量也会被替换( ...

  4. grep 后加单引号、双引号和不加引号的区别

    环境:VirtualBox4.1 + RedHat Linux 6 + Putty0.62 单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.单引 ...

  5. Shell中 单引号(‘‘) 双引号(““) 反引号(``) $() 的区别

    字符串与引号 Shell 的模型就是标准的字符流过滤器模型,简单来说,就是一条命令把结果送到标准 输出,这个标准输出被连接到下一个命令的标准输入,由此来实现一系列命令之间的联动. 每一个命令的输出都是 ...

  6. 【Linux】Shell(Bash)单引号、双引号、不加引号和反引号用法和区别详解

    简要总结 不加引号:不会将含有空格的字符串视为一个整体输出, 如果内容中有变量等,会先把变量解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续 ...

  7. 单引号, 双引号,反引号的区别

    单引号, 双引号,反引号的区别 区别: 区别: 单引号: 所见即所得 里面的内容会原封不动显示出来 双引号: 会解析里面的变量和特殊符号 反引号: 反引号里面的内容会被优先执行 [root@alice ...

  8. mysql中双引号和单引号有什么区别

    mysql中双引号和单引号有什么区别 前2天看到有人问,mysql中双引号和单引号有什么区别? 希望大家可以关注下公众号,支持一下,鞠躬感谢~ 我就直接po代码和截图了,如下 select * fro ...

  9. shell中单引号双引号反引号的区别

    本文首发于 http://blog.csdn.net/lineuman 1.shell中单引号,双引号,反引号的区别? 2.shell IFS解惑? 2017.4.19答 在shell中这几个引号的区 ...

  10. 使用变量时,单引号、双引号、反向单引号的区别

    单引号,双引号,反向单引号的区别: 1.单引号:当变量内容用单引号('')时,对里面的命令echo和变量USER都无法识别,只识别成字符串本身,称之为强引用. 2.双引号:当变量内容用双引号(&quo ...

最新文章

  1. Linux 最常用命令整理,建议收藏!
  2. EUV光刻机全球出货量达57台
  3. css盒子子类继承父类哪些,css不继承父类的属性有哪些
  4. 吕布流水账 -- 纪念我的爱情
  5. 鸿蒙首饰用什么合成,天下HD鸿蒙炼炉是什么?鸿蒙炼炉讲解
  6. axios请求本地的json文件在打包部署到子目录域名下,路径找不到
  7. 发布虚拟机WEB服务 备忘
  8. 外媒:苹果已有条件批准京东方为iPhone 13供应OLED屏幕
  9. 1075 - Incorrect table definition;there can be only one auto column and it must be defined as a key
  10. 最新Discuz验证码和PhpWind验证码的识别
  11. 拓端tecdat|python缺失值处理案例分析:泰坦尼克数据
  12. 什么时候需要用到RCC_APB2Periph_AFIO–复用IO时钟的使用
  13. 【触想智能】工业平板电脑触摸屏选择分析
  14. Arch Linux Arm 安装Yaourt
  15. 【魔方攻略】斜转魔方教程(原创)
  16. WIN10和MAC OS双系统,调整MAC os分区给WIN10系统扩C盘
  17. JAVA基础试题抄录
  18. 基于知识图谱的多模内容创作技术
  19. ArcGIS Server 注册私有云存储并发布影像切片服务
  20. Uva 1626(区间dp)

热门文章

  1. 博客也是网络赚钱的有利工具
  2. 3.10 Spark RDD编程案例
  3. Pycharm快捷键设置(鼠标滚动控制字体大小)
  4. Scala中的Apply方法与伴生对象
  5. NMF(非负矩阵分解)的场景应用
  6. spark概念、编程模型和模块概述
  7. Linux:shell变量功能和Bash shell的操作环境
  8. 人脸检测-Haar分类器方法
  9. 汇编语言软件延时1s
  10. 华为融合位置服务器,融合服务器