我知道这个问题已经开始 - 过去开始“宗教”战争,可能没有一个正确的答案。但是,在与KSH和CSH合作了过去3 - 4年之后,并经历了从一个到另一个的移植或将常用逻辑应用于多个版本(读为旧版代码)的痛苦,如果我正在编写新脚本,我会选择KSH,但出于强迫而不是选择。除KSH/CSH外,还有更好的选择吗?也可以跨Unix(Solaris/HP/IBM/FreeBSD)和Linux移植的东西(如果我不问太多,或者是否有意义,所有Linux口味是否有意义)

等待建议...

和平:) devang kamdar

有帮助吗?

解决方案

我建议朴素的老 sh, ,无处不在。

同样,值得注意的是,可移植性不仅涉及shell,还涉及脚本中使用的其他命令 awk, grep, ps 或者 echo.

其他提示

如果您真的希望它是可移植的(我不知道任何可维护的壳牌),我会指定#!/bin/sh并进行测试 短跑 如果可能的话,其他壳。

我希望BASH目前是最宽的扩散外壳,因为它是许多Linux发行版的默认值(甚至可以在Windows上使用Cygwin运行,但对于其他外壳也可能是正确的)。另一种可能是不使用外壳本身进行脚本,而是其中一种脚本语言,例如Perl,Python,Ruby,...

我通常使用ksh。我发现这是功能和便携性之间的良好折衷。它在大多数Linux框和Solaris上都存在(或可兼容版本)。自从我使用HP-ux以来已经有一段时间了,但是我很确定它也可以在那里使用。

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

您最低的共同点将是Bourne(SH),因此值得考虑的是您的主要关注点。不过,它缺少一些更友好的KSH和Bash功能。

仍然值得避开CSH/TCSH进行脚本。 CSH编程认为有害 是一个老人,但仍然很重要。

我的答案是Perl。

做所有“ sh”'bash'等的事情都可以更优雅地做。

它实际上是更便携的。给定版本的Perl是所有平台非常稳定的。 Linux,Solaris和AIX分布之间没有显着差异,而这些平台之间的移植壳脚本是真正的痛苦。

它在所有Windows Paltforms上都可以使用!只要您避免回头,您的脚本就有很大的运行机会。

Python!查看Ipython,这是一个增强的Python解释器。还: UNIX和Linux系统管理的Python.

您可以编写出色的便携式脚本,这很有趣。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top