bash中的引号

256 阅读1分钟

双引号

如果我们将文本放在双引号中,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

单引号