加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 编写跨平台shell脚本的最佳方法是什么

发布时间:2020-12-16 01:58:16 所属栏目:安全 来源:网络整理
导读:我有一个 shell脚本,我想在多个平台上运行,所有平台都支持bash.我的问题是某些命令在 Linux,FreeBSD,OS X和Cygwin上表现不同. 到目前为止我的想法是: 为主脚本中的所有特定于操作系统的操作创建函数的默认实现,然后检查$OSTYPE并获取特定于实现的文件,该文
我有一个 shell脚本,我想在多个平台上运行,所有平台都支持bash.我的问题是某些命令在 Linux,FreeBSD,OS X和Cygwin上表现不同.

到目前为止我的想法是:

>为主脚本中的所有特定于操作系统的操作创建函数的默认实现,然后检查$OSTYPE并获取特定于实现的文件,该文件(可选)替换行为不同的命令.如果我这样做,我应该如何使用多个参数处理命令?传递给函数的四个位置参数不是最干净的方法.
>将所有实现放在我的脚本中,每个实现都在名称中加上一个词缀,检查$OSTYPE并创建一个OPSUFFIX变量,然后为每个操作调用操作$OPSUFFIX.
> ./configure magic?
>迁移到类似Python的东西 – 可能是最明智的,但需要更多的代码更改.如果这是一个惯用的init脚本,这不是一个选项.

解决方法

首先,尽可能找到在差异无关紧要的情况下做自己想做的事情的方法.例如,某些版本的tar用于不支持-z选项来处理gzip压缩文件.然而,结合tar和gzip是可移植的.类似地,有一些方法可以调用ps,它们通常在BSD和LINUX上都有效.

一旦你发现你仍然需要处理的事情,你采购文件来提供处理命令语法的函数似乎是合理的.为避免位置参数,您可以使用内置bash的getopt.

另一种方法可能是编写一个python脚本或类似的东西,它只封装了最糟糕的平台依赖命令行为.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读