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
versionpdksh
&mksh
也不会表现出这种行为)?无证行为?再说一次,只有一个人能说,他可能不在这里。这就是说,你是对的,一个bug是可能的,我已经适当地修改了我的措辞。这不是不可能的,这是故意的,但在我看来,一个bug远比这种奇怪的、不一致的行为是故意的更可能,在sh_lex
中的解析是一个1200函数,有多达8个嵌套级别。它肯定会有一些bug。。。顺便说一下,你编辑了问题的标题,它不像“未关闭的背景标记”那么简单;“
在反勾号之前开始,并在命令结束之前关闭……无论如何,这都是错误的,sh_lex()
可能在某种程度上混淆了这一点。。。