为什么 bash 中 \n 扩展为 n?

为什么 bash 中 \n 扩展为 n?

当谈到外壳操作,第一步我能理解,但是第二步我有点困惑。这是我的理解:

首先,shell 将输入拆分为单词和运算符,然后根据引用规则执行。这是我的一些问题。当我执行时:

$ \n
bash: n: command not found

为什么是n: command not found?不是\n: command not found

$ $'\n'
bash: $'\n': command not found

为什么它不执行 ANSI-C 引用?

顺便问一下,当输入是脚本文件时,它是如何拆分成单词和运算符的?逐行还是整体?

答案1

反斜杠引用以下字符(请参阅 中的引用man bash)。\n因此被解释为n(并且作为命令的第一个单词,这将阻止别名扩展,请参阅 中的 ALIASES man bash)。

$'\n' 解释为 ANSI-C 引用。 Bash 只是使用相同的引用来显示有问题的字符。你可以得到同样的错误

'
'

这相当于它。

分词的过程在开头描述man bash。如果您有疑问,请提出更具体的问题,或查看源代码

相关内容