5.1 引用变量

引用变量时,通常建议将变量包含在双引号中。因为这样可以防止除 $` (反引号)和\(转义符)之外的其他特殊字符被重新解释。在双引号中仍然可以使用$引用变量("$variable"),也就是将变量名替换为变量值(详情查看样例 4-1)。

使用双引号可以防止字符串被分割。即使参数中拥有很多空白分隔符,被包在双引号中后依旧是算作单一字符。

List="one two three"

for a in $List     # 空白符将变量分成几个部分。
do
  echo "$a"
done
# one
# two
# three

echo "---"

for a in "$List"   # 在单一变量中保留所有空格。
do #     ^     ^
  echo "$a"
done
# one two three

下面是一个更加复杂的例子:

info 当字符分割或者保留空白符出现问题时,才需要在echo语句中用双引号包住参数。

样例 5-1. 输出一些奇怪的变量

单引号(' ')与双引号类似,但是在单引号中不能引用变量,因为 $ 不再具有特殊含义。在单引号中,除'之外的所有特殊字符都将会被直接按照字面意思解释。可以认为单引号(“全引用”)是双引号(“部分引用”)的一种更严格的形式。

extra 因为在单引号中转义符(\)都已经按照字面意思解释了,因此尝试在单引号中包含单引号将不会产生你所预期的结果。

Last updated

Was this helpful?