6

我知道这个问题过去曾引发过一场“宗教”战争,可能没有一个正确答案。但是在过去 3-4 年使用 ksh 和 csh 并经历了从一个移植到另一个或将一个通用逻辑应用于多个版本(读取为遗留代码)的痛苦之后,如果我正在编写一个新脚本,我会去ksh,但出于强迫而不是选择。除了 ksh/csh,还有更好的选择吗?还有一些可以跨 Unix(Solaris/HP/IBM/FreeBSD)和 Linux 移植的东西(如果我没有要求太多,或者它是否对所有 Linux 风格都有意义)

等待建议...

和平 :) Devang Kamdar

4

6 回答 6

9

我建议plain old sh,它随处可见。

此外,值得注意的是,可移植性不仅涉及 shell,还涉及脚本中使用的其他命令,例如awk、或.greppsecho

于 2009-05-19T09:31:06.680 回答
4

如果你真的希望它是可移植的(我不知道任何 shell 脚本都是可维护的),我会指定 #!/bin/sh 并使用dash和如果可能的其他 shell 进行测试。

于 2009-05-19T09:28:12.707 回答
2

我希望 BASH 成为目前传播最广泛的 shell,因为它是许多 Linux 发行版的默认设置(它甚至可以使用 cygwin 在 Windows 上运行,但其他 shell 也可能如此)。另一种方法可能是不使用 shell 本身编写脚本,而是使用其中一种脚本语言,如 perl、python、ruby ......

于 2009-05-19T09:33:14.443 回答
2

我通常使用ksh。我发现这是功能和可移植性之间的一个很好的折衷。它在大多数 Linux 机器和 Solaris 上都存在(或可用的兼容版本)。我使用 HP-UX 已经有一段时间了(谢天谢地),但我很确定它在那里也可用。

如果您需要支持的所有机器都是现代的,那么 bash 可能是一种选择。Solaris 10 附带一份副本。这是大多数 Linux 机器上的默认设置。

您的最小公分母将是 Bourne (sh),因此如果可移植性是您的主要关注点,则值得考虑。不过,它缺少 ksh 和 bash 的一些更友好的功能。

仍然值得避开 csh/tcsh 来编写脚本。被认为有害的 Csh 编程是一个老歌,但在很大程度上仍然具有相关性。

于 2009-05-19T10:29:30.087 回答
0

我的答案是 perl。

'sh' 'bash' 等是否可以以更好更优雅的方式完成。

而且它实际上更便携。给定版本的 perl 在所有平台上都非常一致。Linux、Solaris 和 AIX 发行版之间没有显着差异,而在这些平台之间移植 shell 脚本确实很痛苦。

它适用于所有 Windows 平台!如果您避免使用反引号和“system()”,您的脚本就有很好的运行机会。

于 2009-05-19T10:38:39.350 回答
0

Python!查看 iPython,它是一个增强的 Python 解释器。另外:用于 Unix 和 Linux 系统管理的 Python

您可以编写出色的可移植脚本,这很有趣。

于 2009-05-19T15:05:52.913 回答