在 bash 脚本中用双引号转义

在 bash 脚本中用双引号转义

在阅读高级 Bash 脚本指南时,我对这个主题感到困惑。据书中所述,

Bash 脚本,当我们引用一个字符串时,我们将它分开并保护它的字面含义。

转义是一种引用单个字符的方法。字符前面的转义符 (\) 告诉 shell 按字面意思解释该字符。

看起来这\是一个“功能”字符,但是如果它也放在双引号中怎么办?只会\被视为字面意思还是仍然会转义?例如,

echo \z  # z
echo "\z"  # \z  seems that the backslash is taken literally
echo \\  # \
echo "\\"  # \  so why this result is not \\ ?

答案1

man bash

将字符括在双引号中可保留引号内所有字符的字面值,但 $、`、\、[...] 除外。仅当后跟以下字符之一时,反斜杠才保留其特殊含义:$、` 、"、\ 或换行符。

相关内容