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