哪些外壳不支持美元括号扩张和需求反引号?

哪些外壳不支持美元括号扩张和需求反引号?

现代建议是使用:

$(...)

而不是旧的:

`...`

主要是为了可读性并避免嵌套时需要转义。

哪些 shell 不支持该$(...)表单,其中有哪些至今仍在使用?

答案1

原始的 Bourne shell、csh 或 tcsh 都不支持$()且不需要`` 命令替换。

在许多基于 UNIX 的操作系统上,Bourne shell 不再用作默认 shell (/bin/sh)。然而,这些 shell 仍然由操作系统供应商提供,因为它们由于历史原因仍在使用。

AIX 和 HP-UX 都具有 /bin/sh 作为 POSIX 兼容 shell。 Bourne shell 在 AIX 上仍然可以使用“bsh”(但在1995年对于 AIX 4.1)和 HP-UX 11.11 '/usr/old/bin/sh'(Bourne 已从 11.23 中删除)。我不确定这个转变是什么时候发生的,但那是很多年前的事了。

答案2

Solaris 10 及更早版本/bin/sh不支持$().

它至今仍在使用,因为 Solaris 10 仍在使用,Sun 不想用符合标准的版本(直至并包括 Solaris 10)替换它 - 而且因为大多数人认为它/bin/sh是默认 shell不知道如何使用符合 POSIX 的 shell 可移植地执行脚本

Sun 不进行更改的动机/bin/sh是为了避免破坏依赖于不合格行为的现有 shell 脚本。

相关内容