我有一个shell脚本我想在多个支持bash的平台上运行。我的问题是某些命令在Linux,FreeBSD,OS X和Cygwin上表现不同。
到目前为止我的想法是:
$OSTYPE
和source
特定于实现的文件,该文件(可选)替换行为不同的命令。如果我这样做,我应该如何使用多个参数处理命令?传递给函数的四个位置参数不是最干净的方法。$OSTYPE
并创建一个OPSUFFIX
变量,然后为每个操作调用operation$OPSUFFIX
。./configure
魔法?答案 0 :(得分:1)
首先,尽可能找到在差异无关紧要的情况下做你想做的事情的方法。例如,某些版本的tar用于不支持-z选项来处理gzip压缩文件。然而,结合tar和gzip是可移植的。类似地,有一些方法可以调用ps,它们通常在BSD和LINUX上都有效。
一旦你发现你仍然需要处理的事情,你采购文件以提供处理命令语法的函数似乎是合理的。为了避免位置参数,你可以使用内置bash的getopt。
另一种方法可能是编写一个python脚本或类似的脚本,它只封装了与platfrom相关的最糟糕的命令行为。