在 Bash 中,单引号('
)和双引号("
)的主要区别在于它们对特殊字符和变量的处理方式不同。
单引号(’ ')
-
完全禁止扩展:
单引号内的所有字符都被原样对待。特殊字符(如$
、*
、!
等)和变量不会被解释或扩展。echo 'This is a $TEST string with special characters: !@#'
输出:
This is a $TEST string with special characters: !@#
双引号(" ")
-
允许变量扩展:
双引号内的变量会被解释和扩展。TEST="test" echo "This is a $TEST string"
输出:
This is a test string
-
允许命令替换:
双引号内的命令替换($(command)
或`command`
)会被执行。echo "Current date and time: $(date)"
输出类似:
Current date and time: Sat Jul 27 14:22:48 UTC 2024
-
保留部分特殊字符:
双引号内的部分特殊字符(如\
、$
、`
)仍会被解释。而其他特殊字符(如*
、!
、#
等)则不会。echo "Special characters: \$ \`"
输出:
Special characters: $ `
总结
- 单引号:适用于包含许多特殊字符或变量名的字符串,确保所有字符都原样输出。
- 双引号:适用于需要变量替换或命令替换的字符串,同时仍然保留部分特殊字符的解释功能。