为什么ksh88和ksh93允许未闭合的反引号?

Cur*_*Guy 6 unix shell ksh

我有个问题.

当我输入时,我不明白为什么

echo "`date -d 20121231 +"%B
Run Code Online (Sandbox Code Playgroud)

它执行没有错误:

December
Run Code Online (Sandbox Code Playgroud)

为什么它在开幕时成功执行

`

最后还没结束?它适用于Korn Shell 88和93.

Cha*_*ffy 1

这是大卫·科恩(David Korn)做出的(如果是有意的话)决定。

没有外部力量对这种行为的要求——没有向后兼容性要求;没有符合标准的原因(就此而言,当 ksh88 出现时 POSIX sh 尚未标准化)。

唯一能够对未指定行为(既不实现也不破坏任何记录语义的行为)背后的基本原理(如果有的话)给出明确答案的人是这些 shell 的作者。

  • 这具有“ksh”实现中错误的所有特征;我在手册页中找不到对此行为的任何引用,其他示例(例如 `echo "x` 和 `echo \`ls` )的行为符合预期。其他 `ksh` 版本 `pdksh` 和 `mksh` 也没有不表现出这种行为)。 (2认同)