当谈到外壳操作,第一步我能理解,但是第二步我有点困惑。这是我的理解:
首先,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
。如果您有疑问,请提出更具体的问题,或查看源代码。