shell中的单引号和双引号有什么区别
在 Shell(如 Bash) 中,单引号 ' ' 和双引号 " " 都用于引用字符串,但它们对变量、命令替换和转义字符的处理方式完全不同。
1️⃣ 单引号 ' ':强引用
单引号中的内容会被 逐字解释,Shell 不会做任何解析。
示例
name=Tom
echo '$name'
输出:
$name
因为:
$name被当作普通字符- 不会变量展开
- 不会命令替换
- 不会识别转义字符
2️⃣ 双引号 " ":弱引用
双引号允许 Shell 做部分解析,主要是:
- 变量替换
- 命令替换
- 转义部分字符
示例
name=Tom
echo "Hello $name"
输出:
Hello Tom
3️⃣ 双引号支持的功能
变量展开
echo "User: $USER"
命令替换
echo "Today is $(date)"
转义字符
在双引号中,反斜杠 \ 仍然有效:
echo "He said \"Hello\""
输出:
He said "Hello"
4️⃣ 单引号 vs 双引号对比表
| 特性 | 单引号 ' ' |
双引号 " " |
|---|---|---|
变量 $var |
❌ 不展开 | ✅ 展开 |
命令替换 $( ) |
❌ 不执行 | ✅ 执行 |
反斜杠转义 \ |
❌ 无效 | ✅ 有限有效 |
通配符 * |
不展开 | 不展开 |
| 用途 | 原样字符串 | 需要变量的字符串 |
留下评论