1、双单引号

'':单引号。在单引号中所有的特殊符号,如$"`"(反引号)都没有特殊含义。

2、双引号

"":双引号。在双引号中特殊符号都没有特殊含义,但是$"`"(反引号)和\除外,这三个符号是有特殊含义的,拥有“调用变量的值”、“引用命令”和“转义符"的特殊含义。

单引号和双引号的区别,举例如下:

# 1.定义变量name的值是sc
[root@localhost ~]# name=sc # 2.如果输出时使用单引号,则$name原封不动的输出
[root@localhost ~]# echo '$name'
$name # 3.如果输出时使用双引号,则会输出变量name的值sc
[root@localhost ~]# echo "$name"
sc # 4.反引号括起来的命令会正常执行
[root@localhost ~]# echo `date`
2020年 6月 21 日星期一 18:16:33 CST # 5.但是如果反引号命令被单引号括起来,那么这个命令不会执行,
# `date`会被当成普通字符输出
[root@localhost ~]# echo '`date`'
`date` # 如果是双引号括起来,那么这个命令又会正常执行
[root@localhost ~]# echo "`date`"
2020年 6月 21 日星期一 18:18:18 CST

3、$符号

$:用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。

在Linux系统中,定义一个变量非常简单,直接用变量名=变量值的格式定义变量就可以了。而我们在查看变量值的时候,使用$变量名就可以查看到。

如下,用echo命令查看变量name的值,如果我们不加$echo命令会认为要输出name字符串,如果在name前加上$符号,echo命令就会输出变量name的值。

# 定义name变量
[root@localhost ~]# name=sc [root@localhost ~]# echo name
name
[root@localhost ~]# echo $name
sc

4、反引号

"``":反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()

作用一样,不过推荐使用$(),因为反引号非常容易看错。

5、$()符号

$():和反引号作用一样,用来引用系统命令。

如果我们直接从命令行中执行一个系统命令(如date命令),这个时候命令是不用$()符号括起来的,因为Shell是可以直接调用系统命令的。

那什么时候需要把系统命令括起来呢?

如定义一个变量a,需要把date命令的结果,赋值给a的时候,如a=date。这个时候就需要让date命令先运行,再把所得到的值赋值给变量a

如下示例:

[root@localhost ~]# a=date
[root@localhost ~]# echo $a
date [root@localhost ~]# a=`date`
[root@localhost ~]# echo $a
2020年 6月 22日 星期一 18:18:18 CST

上面示例中可以看到,如果date命令不加反引号,Shell会认为把date字符串赋值给a变量。

总结:也就是说,只有需要把命令的结果赋值于变量的时候,才需要用反引号或者$()符号把命令括起来。任何命令的结果都可以赋值给变量,只要命令的结果有输出,像cd命令就不可以。

推荐使用$()代替反引号。

  • 练习:把root目录下所有文件的文件名存入变量b中。
    [root@localhost ~]# b=$(ls /root)
    [root@localhost ~]# echo $b
    anaconda-ks.cfg install.log install.log.syslog
  • 综合练习:
    # 如果命令不用反引号包含,命令不会执行,而是直接输出
    [root@localhost ~]# echo ls
    ls # 只有用反引号包括命令,这个命令才会执行
    [root@localhost ~]# echo `ls`
    anaconda-ks.cfg install.log install.log.syslog # 使用$(命令)的方式也是可以的
    [root@localhost ~]# echo $(date)
    2020年 6月 22日 星期一 18:18:18 CST

6、#符号

#:在Shell脚本中,#开头的行代表注释。

7、\符号

\:转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$name将输出$name符号,而不当做是变量引用。

『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)的更多相关文章

  1. 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)

    提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...

  2. 『忘了再学』Shell基础 — 24、Shell正则表达式的使用

    目录 1.正则表达式说明 2.基础正则表达式 3.练习 (1)准备工作 (2)*练习 (3).练习 (4)^和$练习 (5)[]练习 (6)[^]练习 (7)\{n\}练习 (8)\{n,\}练习 ( ...

  3. 『忘了再学』Shell基础 — 11、变量定义的规则和分类

    目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...

  4. 『忘了再学』Shell基础 — 16、位置参数变量

    目录 1.位置参数变量$n 2.位置参数变量$*和$@ 3.位置参数变量$# 位置參数变量的作用主要用于脚本的传参. 位置參数变量的名称和作用都是确定不能改变的,但是该变量的内容是可以更改的,也就是变 ...

  5. 『忘了再学』Shell基础 — 2、Shell的作用与分类

    目录 1.Shell的作用 2.Shell的分类 1.Shell的作用 Shell除了能解释用户输入的命令,将它传递给内核,还可以: 调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果. 在 ...

  6. 『忘了再学』Shell基础 — 14、环境变量(二)

    目录 1.PS1变量的作用 2.PS1变量的查看 2.PS1可以支持的选项 3.PS1环境变量的配置 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自 ...

  7. 『忘了再学』Shell基础 — 3、echo命令的介绍与使用

    目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...

  8. 『忘了再学』Shell基础 — 25、扩展正则表达式

    目录 1.扩展正则表达式说明 2.练习 (1)+和?练习 (2)|和()练习 3.注意(重点) 1.扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Sh ...

  9. 『忘了再学』Shell基础 — 30、sed命令的使用

    目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...

随机推荐

  1. selenium&火狐驱动安装及兼容性处理

    1.selenium安装 安装:pip install selenium==3.7.0 卸载: pip uninstall selenium 查看版本号:pip show selenium   2.火 ...

  2. 报错----运行springboot项目出现:Type javax.xml.bind.JAXBContext not present

    目的:运行springboot项目出现:Type javax.xml.bind.JAXBContext not present 环境: 问题:运行springboot项目出现:Type javax.x ...

  3. Git指令小结

    一.初始化 git config --global user.name "username" 设置git用户名 git config --global user.email &qu ...

  4. [SPDK/NVMe存储技术分析]013 - libibverbs API应用案例分析

    本文是对论文Dissecting a Small InfiniBand Application Using the Verbs API所做的中英文对照翻译 Dissecting a Small Inf ...

  5. 亚马逊云储存器S3 BCUKET安全性学习笔记

    亚马逊云储存器S3 BCUKET安全性学习笔记 Bugs_Bunny CTF – Walk walk CTF 昨天玩了会这个比赛,碰到这题是知识盲点,来记录一下. 先从题目看起吧. http://ww ...

  6. SolidWorks在一个零件中设置不同的尺寸版本

    问题 比如想设置一系列螺丝的长度,一个一个建零件非常麻烦,希望在一个零件中设置不同的长度尺寸版本 解决 比如想设置不同的拉伸长度,右键拉伸>配置特征 可以生成新配置,设置不同的D1参数,即可生成 ...

  7. luoguP6619 [省选联考 2020 A/B 卷]冰火战士(线段树,二分)

    luoguP6619 [省选联考 2020 A/B 卷]冰火战士(线段树,二分) Luogu 题外话1: LN四个人切D1T2却只有三个人切D1T1 很神必 我是傻逼. 题外话2: 1e6的数据直接i ...

  8. 半吊子菜鸟学Web开发4 --Html css学习2

    1<a>标签,链接到另一个页面 <a href="目标网址" title="鼠标滑过显示的文本">链接显示的文本</a> H ...

  9. C++ TCHAR* 与char* 互转

    C++ TCHAR* 与char* 互转 在MSDN中有这么一段: Note: The ANSI code pages can be different on different computers, ...

  10. Java 中的final关键字有哪些用法?

    (1)修饰类:表示该类不能被继承:(2)修饰方法:表示方法不能被重写:(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量).