『忘了再学』Shell基础 — 9、Bash中的特殊符号(一)
2022-04-11 11:00
1651 查看
[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 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基础-Bash基本功能-通配符和其他特殊符号
- Linux学习日记 —— 10.3.5 Shell基础-Bash基本功能-通配符和其他特殊符号
- shell基础-bash基本功能-通配符和其他特殊符号
- 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)
- Shell脚本基础之Bash的基本功能——历史命令(history)、命令和文件补全(Tab键)、命令别名(alias)、常用快捷键,输入输出重定向、多命令顺序执行、管道符、通配符与其他特殊符号
- Linux学习(二十二)Shell基础(三)特殊符号、sort、wc、uniq、tee、tr、split
- shell基础(下)的特殊符号
- [Shell]Bash基本功能:通配符与特殊符号
- linux shell 语言基础(3)shell 特殊位置变量、source、sh、bash、./执行脚本的区别等
- Linux学习(二十二)Shell基础(三)特殊符号、sort、wc、uniq、tee、tr、split
- Linux系统学习笔记Shell基础特殊符号、sort、wc、uniq、tee、tr、split
- shell基础 第一部分 (特殊符号,变量)
- bash shell (2) 特殊符号变量
- [linux_shell]Bash通配符与特殊符号
- shell基础-输入输出以及重定向/多命令顺序执行与管道符/通配符与特殊符号
- Shell基础知识 (3) 之 特殊符号、cut sort wc uniq tee tr split命令
- shell编程基础(四)-shell特殊符号
- bash shell是如何识别特殊符号的
- shell脚本中的一些特殊符号
- bash shell笔记1 脚本基础知识