给自己一个7th Edition Unix Programmer's Manual (Vol 1)并编程到这里描述的(Bourne)shell符号。如果您能找到适当的手册,您实际上可以升级到System V(Bourne)shell;它具有一些额外的功能,比如第7版外壳没有的功能,而且它们在任何地方都是可用的。 (这是一个非常保守的立场 - 但它会给你最大的便携性。)
另一个问题是选择使用哪些命令以及哪些选项用于这些命令。例如,GNU grep有许多有用的选项,这些选项在别处不可用。 GNU sed类似地具有其他地方不可用的扩展。如果你编写你的shell脚本来使用这些扩展,你的代码将是不可移植的,即使这些shell都能正确理解语法。
我建议您意识到POSIX标准所说的便携性。绝大多数POSIX功能通常都是由大多数系统支持的,但每个系统通常会增加一些额外的选项和功能,这些选项和功能并不总是可用。请注意,POSIX外壳确实具有一些功能,特别是$(...)
命令替换,而不是原始Bourne shell中的反标号。您必须决定更现代的符号带来的清晰度是否值得(可能的)便携性的损失。
而且,Autoconf shell准则集中在最大可移植性上。然而,结果是一个相当高度的shell脚本版本,不仅仅是因为它必须与宏处理器互通,这会导致一些额外的限制。
请注意,编写可与Bourne/Korn/POSIX shell系列和C Shell系列一起使用的可移植shell脚本实际上是不可能的。有strong arguments来总结“你不应该在C shell中编写脚本”。
这是我的第一选择。商业上的原因......他们不同意使用perl/python,他们没有说出很好的理由......所以不得不从shell和shell开始也是一个不错的选择......是不是......它也有很好的功能。 – 2010-10-25 06:59:56
对于许多任务来说,shell脚本的使用非常简单而高效。但一旦涉及到更复杂的事情,特别是处理数据,这不是我的第一个意见了。只要告诉他们,它将花费更多,因为你需要更多的时间:P – joni 2010-10-25 07:11:22
这个选择不在我的手中......对不起的朋友......但遵循良好的可移植unix shell脚本的指导原则是我目前正在寻找...暂且...谢谢 – 2010-10-25 07:13:11