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

说一下单引号、双引号和不加引号区别总结说明:

单引号:

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

双引号:

特殊符号,有了原本的特殊意思,$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<

> 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<

> "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解答方法。总结论很多时候,总结的结论未必适合所有情况。但是,总结小结论,便于我们学习知识和对知识的深刻理解,因此推荐大家多做总结。

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

linux给变量加单引号,单引号、双引号和不加引号区别相关推荐

  1. Linux环境变量加载的研究

    我们经常遇到在linux执行某条命令时出现xxx文件没找到的问题.很多情况都不是库没有安装,而是环境变量的错误. 但是,我明明是设置了环境变量啊.所以,我对此进行了试验. 我们登录linux有很多种, ...

  2. Python中对象名称前单下划线和双下划线有啥区别

    单下划线 在一个类中的方法或属性用单下划线开头就是告诉别的程序这个属性或方法是私有的.然而对于这个名字来说并没有什么特别的. 引自PEP-8: 单下划线:"内部使用"的弱指示器.比 ...

  3. Linux环境变量说明与配置

    相关的配置文件说明: /etc/profile 范围:对所有用户生效 作用: a.定义USER变量 b.定义LOGNAME变量 c.定义MAIL变量 d.定义PATH变量 e.定义HOSTNAME变量 ...

  4. 超详干货!Linux 环境变量配置全攻略

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习实验室 Linux环境变量配置 在自定义安装软件 ...

  5. Linux环境变量配置

    这篇文章主要介绍了Linux环境变量配置全攻略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 在自定义安装软件的时候,经常需要 ...

  6. 中修改环境变量_超详干货!Linux环境变量配置全攻略

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

  7. 操作系统:Linux 环境变量配置的 6 种方法!

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

  8. Linux 环境变量配置总结

    Linux是多用户的任务系统,对于每个用户都可以指定特定的用户变量.针对不同程序在不同的环境下运行就需要修改环境变量进行定制,本文介绍 Linux常见的环境变量设置方法,希望对你有帮助.图片 一.Li ...

  9. Linux 环境变量配置全攻略

    Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...

最新文章

  1. 逻辑运算符和||与(和|)的区别
  2. Highlight – 代码高亮html输出软件
  3. 测试硬盘读写速度软件_Linux 测试 IO 性能(磁盘读写速度)
  4. 开发者硬核福利!极光可信数据云来了
  5. python3-day4(re正则表达式,冒泡)
  6. Android动画分类与总结
  7. 浏览器背后的运行机制
  8. 以下选项中不是具体的python序列类型是_智慧树知到《大数据分析的python基础》章节测试答案...
  9. Spring mvc + mybatis+maven集成swagger ui自动生成api文档
  10. Origin上下标输入
  11. 数据结构-快速排序 C语言源码
  12. 【PCIe总线】-- PCI、PCIE基础知识
  13. 开发”小米商城官网首页”(静态页面)
  14. 【Linux os7】--详细搭建LAMP+安装Zabbix4监控服务
  15. Win7 IE浏览器的降级和升级
  16. 【uni-app】总结uni-app订单支付和打包发布
  17. extern C和__declspec(dllexport)以及__declspec(dllimport) 和def的简单解析
  18. 电机控制系统使用标幺值的意义
  19. 06_基于树莓派wiringPi的温湿度采集实验
  20. 厦门考计算机竞赛保送北大清华名单,福建44名学生保送北大清华 厦门人数最多有19人...

热门文章

  1. 2019年秋季PAT甲级考试真题及参考答案
  2. AMR在IP域中的编码
  3. 智能算法--遗传算法(1-1)
  4. QT和MFC的优缺点比较
  5. 【Day4.6】坐BTS赶去湄南河夜游
  6. 详细讲解transform,一看就懂了!(转)
  7. 读取一个文件,将其Base64编码,每76个字符加一个换行
  8. 关于配置远程仓库gitee无法连接配置微服务的问题
  9. Spark考试题总结
  10. CSS3新增属性和新增规则总结