哪些空壳不支持美元括号的扩张,并要求回购?


8

现代建议是使用:

$(...)

而不是旧的:

`...`

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

哪些外壳程序不支持该$(...)格式,并且今天仍在使用它们?



它说:“使用反引号的唯一原因是与真实的Bourne外壳(如传家宝)兼容。”
joeytwiddle

1
重要的一点是,所有维护的90年代后的类Unix系统都将具有一个称为的命令sh,该命令在正确的环境中将得到支持$(...)
斯特凡Chazelas

Answers:


8

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

在许多基于UNIX的操作系统上,Bourne Shell不再用作默认Shell(/ bin / sh)。但是,由于历史原因仍在使用这些外壳程序,因此仍由OS供应商提供。

AIX和HP-UX都具有/ bin / sh作为POSIX兼容的外壳。Bourne Shell在AIX上仍然可以使用'bsh'(但在1995年 AIX 4.1中已弃用)和HP-UX 11.11'/ usr / old / bin / sh'(Bourne从11.23中删除)。我不确定何时进行切换,但这是很多年前的事。


5

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

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

Sun /bin/sh坚持不改变的动机是避免破坏依赖不合格行为的现有Shell脚本。


2
@cuonglm,是的,我刚刚对其进行了测试,并且可以确认。本来以为赫德将被释放,而不是Sun / Oracle改变其对/bin/sh...的政策
maxschlepzig 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.