4.2 shell中的引用
shell中的引用:在bash中有很多特殊字符,这些特殊字符就具有特殊含义。引用就是通知shell将这些特殊字符当作普通字符来处理。
转义字符“\”:如果将\放到特殊字符前面,shell就忽略与\相挨的一个特殊字符的原有含义,把它们当作普通字符对待。
ll file*
mkdir 1*
ls -ld 1*
ll -d 1*
[root@192 /]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@192 /]# echo $PATH
$PATH
[root@192 /]# echo $$PATH
$/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@192 /]# echo $$PATH
$$PATH
单引号:如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义被忽略。强引用(单引号内部内容原样)
ll -d 1’*’
[root@192 /]# echo ‘$PATH’
KaTeX parse error: Expected 'EOF', got '#' at position 18: …TH [root@192 /]#̲ echo '$PATH’
$$PATH
[root@192 /]# echo ‘$$PATH’
$$PATH
反引号:**反引号
**表示执行反引号中的命令
[root@192 /]# echo date
date
[root@192 /]# echo date
Mon Dec 23 15:55:50 CST 2019
双引号:双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍然有一些特殊字符保留自己的特殊含义,比如**”$“和“\”以及“ `(反引号) ”**
[root@192 /]# echo “$PATH”
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@192 /]# echo “$PATH”
$PATH
[root@192 /]# echo “$$PATH”
KaTeX parse error: Expected 'EOF', got '#' at position 95: …in [root@192 /]#̲ echo '"PATH"’
“$PATH”
[root@192 /]# echo ‘"$PATH"’(外单引号内双引号)
“$PATH”
[root@192 /]# echo “‘
P
A
T
H
′
"
(
外
双
引
号
内
单
引
号
)
′
/
u
s
r
/
l
i
b
64
/
q
t
−
3.3
/
b
i
n
:
/
u
s
r
/
l
o
c
a
l
/
s
b
i
n
:
/
u
s
r
/
l
o
c
a
l
/
b
i
n
:
/
u
s
r
/
s
b
i
n
:
/
u
s
r
/
b
i
n
:
/
r
o
o
t
/
b
i
n
′
注
意
:
双
引
号
引
用
大
部
分
特
殊
字
符
(
包
括
单
引
号
)
,
因
此
单
引
号
被
引
用
,
变
为
普
通
字
符
,
然
后
执
行
PATH'"(外双引号内单引号) '/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin' 注意:双引号引用大部分特殊字符(包括单引号),因此单引号被引用,变为普通字符,然后执行
PATH′"(外双引号内单引号)′/usr/lib64/qt−3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin′注意:双引号引用大部分特殊字符(包括单引号),因此单引号被引用,变为普通字符,然后执行PATH
[root@192 /]# echo "’$PATH’”(外双引号内单引号)
‘$PATH’
[root@192 /]# echo "’$
P
A
T
H
′
"
(
外
双
引
号
内
单
引
号
)
′
PATH'"(外双引号内单引号) '
PATH′"(外双引号内单引号)′/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin’
[root@192 /]# echo “date
”
Mon Dec 23 16:30:35 CST 2019
ll -d
1"*"
myname=redhat
echo “$myname”
echo “$$myname”
echo "date
"