各种不同的引号在shell中具有不同的作用
1. 双引号
(base) [zhiyong@malab Learn]$ echo "a b c" #引号中的内容是一个整体,将被整体输出
a b c
(base) [zhiyong@malab Learn]$ test=123
(base) [zhiyong@malab Learn]$ echo "数字是:$test" #虽然处在双引号内部,对变量的提取依然可以执行,$依然被理解为特殊字符
数字是:123
双引号表示引号中的内容为一个整体,不会仅把引号中的内容当成完全的字符串,双引号内部的特殊符号依然可以执行其原始功能
2. 单引号
(base) [zhiyong@malab Learn]$ aa="abcd" #定义一个变量并赋值
(base) [zhiyong@malab Learn]$ echo $aa #提出变量内容并输出到标准输出
abcd
(base) [zhiyong@malab Learn]$ echo "$aa" #效果与不使用引号相同
abcd
(base) [zhiyong@malab Learn]$ echo '$aa' #使用了单引号以后,引号中特殊字符的含义被屏蔽
$aa
(base) [zhiyong@malab Learn]$ echo \$aa #反斜杠也能使后面的特殊字符含义被屏蔽
$aa
3. 反引号
(base) [zhiyong@malab Learn]$ aa=`cat kk.sh|grep "echo"` #提取反引号中的运算结果并将其赋值给aa
(base) [zhiyong@malab Learn]$ echo $aa #打印aa的内容
echo "hello world!" echo -e "\033[9mhello world!\e[0m" echo -e "\e[5mhello world!\e[0m" echo -e "\033[96mhelllo world!\033[0m" echo -e "\e[9mhello world!\033[0m"
(base) [zhiyong@malab Learn]$ bb=`date +%y%m%d` #运行获取时间日期命令并将其改变格式,结果赋值给bb
(base) [zhiyong@malab Learn]$ echo $bb #打印bb内容
201206
- 反引号的作用是提取反引号中的最终输出结果
- 反引号不支持嵌套使用,也就是不能在反引号中再使用反引号
5. $()
这也是一种提取运算结果的方式,但这种方式可以使用嵌套格式
(base) [zhiyong@malab Learn]$ echo $(pstree|grep "sshd") #提取并输出括号中运算的最终结果
|-sshd-+-3*[sshd---sshd---sftp-server] | |-2*[sshd---sshd---bash] | |-sshd---sshd---bash-+-3*[awk]
(base) [zhiyong@malab Learn]$ echo $(echo $(pstree|grep "sshd")|grep "bash") #使用嵌套格式,利用两级嵌套的方式来提取某些运算的结果
|-sshd-+-3*[sshd---sshd---sftp-server] | |-2*[sshd---sshd---bash]
(base) [zhiyong@malab Learn]$ touch $(date +%y%m%d).tar #利用$()的方式提取某些命令运算结果,并创建文件
网友评论