SHELL 变量引用
shell变量的引用非常重要,运用技巧灵活多变
变量的引用主要包含四类:双引号引用、单引号引用、反引号引用、反斜线引用
" " 双引号 屏蔽除美元符号$、反引号( ` )和反斜线( \ )之外的所有字符
' ' 单引号 屏蔽所有的字符
`` 反引号 shell将反引号中的内容解释为系统命令
\ 反斜线 转义符,屏蔽下一个字符的特殊含义
shell变量的引用指的是 用引用符号将字符串引起来,从而屏蔽特殊字符被shell解释为其他含义。比如通配符星号(*)表示匹配任意字符串,如果引号引起来则只表示星号

双引号屏蔽星号*特殊含义,解释为名称为a*的文件
一、双引号
1、双引号内,除美元符号$、反引号( ` )和反斜线( \ )字符有特殊含义外,其他的所有字符都解释为表面字符含义
2、双引号的第二个作用是 双引号引用变量能够防止字符串分割,保留变量中的空格

上图中的字符we are等等以及空格都解释为表面含义,只有$符号解释为引用符号,将variable的值引用出来了,只有反引号将命令uname -r标准输出赋给了变量,回显到标准输出了

(单词拼错了,将错就错吧)echo $varibale2,因为没有使用双引号将引用变量引用起来,即"$varibale2",所以shell将“this is tree”之间的空格进行了分割,而echo "$variable2"则保留了空格
二、单引号
单引号引用所有的字符,即单引号中字符除单引号之外都解释为字面意义。这样的话,在单引号内引用变量,就不具备引用的作用了

环境变量PWD在双引号中$PWD表示当前目录,而在单引号中仅仅解释为$PWD

如果字符串中有单引号,怎么办?如上图,第一使用双引号将单引号的含义屏蔽掉;第二种将字符串分成三段来解释,三段中的两个单引号,在使用双引号将其屏蔽
’
三、命令替换
命令替换是指将命令的标准输出作为值赋给某个变量,shell使用命令替换有两种方式:
一、使用反引号;而使用$()符号
语法格式:
·Linux命令·
$(Linux命令)

实质上上图命令进行了两步操作:
第一步:先进行反引号`uname -r`或者$(uname -r),得到到内核版本号(反引号会首先被执行,执行结果作为外部的输入,然后其次是执行cd命令)
第二步,执行cd命令,即cd /lib/modules/3.10.0-1127.el7.x86_64/kernel
注意反引号也存在字符串分割特性

反引号··与$()的效果一样,区别是$()可以实现嵌套

END
浙公网安备 33010602011771号