Shell 为什么ksh88和ksh93允许未关闭的回拨码?

Shell 为什么ksh88和ksh93允许未关闭的回拨码?,shell,unix,ksh,Shell,Unix,Ksh,我有个问题 我不明白为什么我打字时: echo "`date -d 20121231 +"%B 它执行时没有错误: December 为什么打开时它会成功执行 ` 到底是不是关了门? 它对Korn Shell 88和93都有效。这是David Korn(如果有意)做出的决定 对于外力造成的这种行为没有要求——没有向后兼容性要求;没有符合标准的原因(就此而言,ksh88问世时POSIX sh尚未标准化) 唯一能够对未指定行为背后的基本原理(如果有)给出明确答案的人是这些shell的作者。您使用

我有个问题

我不明白为什么我打字时:

echo "`date -d 20121231 +"%B
它执行时没有错误:

December
为什么打开时它会成功执行

`

到底是不是关了门? 它对Korn Shell 88和93都有效。

这是David Korn(如果有意)做出的决定

对于外力造成的这种行为没有要求——没有向后兼容性要求;没有符合标准的原因(就此而言,ksh88问世时POSIX sh尚未标准化)


唯一能够对未指定行为背后的基本原理(如果有)给出明确答案的人是这些shell的作者。

您使用的shell是什么?这在
bash
中无法正确执行(三个不同版本),对我来说,bash是sh或
csh
。当单词/行由于某种原因结束时,ksh似乎在自动关闭反勾号
echo“d”ate
也可以工作,但是
echo“d”ate
会等待一个结束的回勾。这与
echo
无关——它的行为方式与任何其他命令相同;除了ksh的(官方的,由David Korn编写)实现之外,它也与任何UNIX shell无关。适当地编辑标题。只需添加到列表中,这在
pdksh
中不起作用。这具有
ksh
实现中的所有缺陷特征;我在手册页和其他示例(如
echo)中找不到任何有关此行为的参考“x
echo`ls
的行为与预期相符。其他
ksh
version
pdksh
&
mksh
也不会表现出这种行为)?无证行为?再说一次,只有一个人能说,他可能不在这里。这就是说,你是对的,一个bug是可能的,我已经适当地修改了我的措辞。这不是不可能的,这是故意的,但在我看来,一个bug远比这种奇怪的、不一致的行为是故意的更可能,在
sh_lex
中的解析是一个1200函数,有多达8个嵌套级别。它肯定会有一些bug。。。顺便说一下,你编辑了问题的标题,它不像“未关闭的背景标记”那么简单;
在反勾号之前开始,并在命令结束之前关闭……无论如何,这都是错误的,
sh_lex()
可能在某种程度上混淆了这一点。。。