双引号
如果我们将文本放在双引号中,shell 使用的所有特殊字符都将失去其特殊意义,并被视为普通字符。例外情况是 $、\和` 。这意味着word splitting、路径名展开、~展开和{}展开被抑制; 然而,parameter展开、算术展开和指令替代展开仍然被执行。使用双引号,我们可以处理包含嵌入空格的文件名。
word splitting
$ ls -l two words.txt
被解析为两个参数,而
$ ls -l "two words.txt"
解析为一个参数,阻止了word splitting
路径名展开
形如
$ echo D*
Desktop Documents
~展开
即home目录
{}展开
创建组合
echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
parameter展开
即环境变量展开
echo $USER
me
单引号
抑制所有展开
算术展开
echo $((2+2))
4
指令替代展开
echo $(ls)
Desktop Documents ls-output.txt Music Pictures Public Templates Videos
思考
echo $(cal)
January 2022 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
echo "$(cal)"
January 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31