我对 Bash 还很陌生,我无法弄清楚我的输入在解释时发生了什么。具体来说,当转义相对于其他扩展步骤发生时。
根据我的阅读,bash 执行以下操作(按顺序):
- 大括号扩展
- 波形符扩展
- 参数和变量扩展
- 命令替换
- 算术扩展
- 分词
- 文件名扩展
但是此列表不包括何时转换所有转义序列,例如'\\' 转化为它们的含义,例如'\'。也就是说,如果我想打印一个反斜杠字符。运行的命令是
echo \\
不是
echo \
因此反斜杠字符的语义所需的语法是两个反斜杠。这必须在内部转换为单斜杠表示形式。
正如我通过一个小型测试程序发现的那样,这似乎是命令替换之前的某个时间。
所以,我的问题是:这一步什么时候发生? (或者 bash 解释循环的完整列表将是完美的)
此外,解释器中还有其他可能让我困惑的微妙之处吗? (我猜与了解完整列表有关)
最佳答案
来自手册页的“扩展”部分,位于“重定向”部分之前。
Quote Removal
After the preceding expansions, all unquoted occurrences of the characters \, ', and " that did not result from one of the above expansions are removed.
引用删除是您列出的七个扩展之后的最后一个过程。
关于Bash 转义/扩展命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891017/