在Shell脚本中,双引号 " "
和单引号 ' '
有以下区别:
- 对于变量扩展:双引号会扩展变量,而单引号不会。变量会被替换为其值,例如:
name="John"
echo "Hello, $name" # 输出:Hello, John
echo 'Hello, $name' # 输出:Hello, $name
- 对于命令替换:双引号会执行命令替换,而单引号不会。命令替换使用
$()
或者 ````来执行命令,并将其输出插入到字符串中,例如:
today=$(date +%Y-%m-%d)
echo "Today is $today" # 输出:Today is 2021-09-10
echo 'Today is $(date +%Y-%m-%d)' # 输出:Today is $(date +%Y-%m-%d)
- 对于转义字符:双引号会解释一些转义字符(如
\n
表示换行),而单引号不会进行解释,只会把其中的内容作为字面值对待,例如:
echo "Hello\nWorld" # 输出:Hello\nWorld
echo 'Hello\nWorld' # 输出:Hello\nWorld
需要注意的是,当字符串中的内容中包含特殊字符时,双引号和单引号的选择要根据需求而定。