AI智能
改变未来

『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)

[toc]

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 namename[root@localhost ~]# echo $namesc

4、反引号

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

$()

作用一样,不过推荐使用

$()

,因为反引号非常容易看错。

5、

$()

符号

$()

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

如果我们直接从命令行中执行一个系统命令(如

date

命令),这个时候命令是不用

$()

符号括起来的,因为Shell是可以直接调用系统命令的。

那什么时候需要把系统命令括起来呢?如定义一个变量

a

,需要把

date

命令的结果,赋值给

a

的时候,如

a=date

。这个时候就需要让

date

命令先运行,再把所得到的值赋值给变量

a

如下示例:

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

上面示例中可以看到,如果

date

命令不加反引号,Shell会认为把

date

字符串赋值给

a

变量。

总结:也就是说,只有需要把命令的结果赋值于变量的时候,才需要用反引号或者

$()

符号把命令括起来。任何命令的结果都可以赋值给变量,只要命令的结果有输出,像

cd

命令就不可以。

推荐使用

$()

代替反引号。

  • 练习:把
    root

    目录下所有文件的文件名存入变量b中。

    [root@localhost ~]# b=$(ls /root)[root@localhost ~]# echo $banaconda-ks.cfg  install.log  install.log.syslog
  • 综合练习:
    # 如果命令不用反引号包含,命令不会执行,而是直接输出[root@localhost ~]# echo lsls# 只有用反引号包括命令,这个命令才会执行[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

符号,而不当做是变量引用。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)