Dav*_*ann 5 bash shell cross-platform
我有一个 shell 脚本,想在所有支持 bash 的多个平台上运行。我的问题是某些命令在 Linux、FreeBSD、OS X 和 Cygwin 上的行为不同。
到目前为止我的想法是:
$OSTYPE特定source于实现的文件(可选)替换行为不同的命令。如果我这样做,我应该如何处理带有多个参数的命令?传递给函数的四个位置参数并不是最简洁的方法。$OSTYPE并创建一个OPSUFFIX变量,然后调用operation$OPSUFFIX每个操作。./configure魔法?首先,尽可能找到做你想做的事情的方法,而差异并不重要。例如,某些版本的 tar 过去不支持 -z 选项来处理 gzip 压缩文件。然而,结合 tar 和 gzip 是可移植的。类似地,调用 ps 的方法通常在 BSD 和 LINUX 上都有效。
一旦您发现仍有需要处理的事情,您寻找文件来提供处理命令语法的函数的方法似乎是合理的。为了避免位置参数,您可以使用 bash 内置的 getopt。
另一种方法可能是编写一个 python 脚本或类似脚本,仅封装最糟糕的平台相关命令行为。
| 归档时间: |
|
| 查看次数: |
3354 次 |
| 最近记录: |