检查Bash脚本是否与sh兼容

图西娜·蒂丽娜·达雅拉特妮(Thuthina Thilina Dayaratne)

我有一个定义脚本的地方#!/bin/bash,我想检查一下此脚本是否与兼容#!/bin/sh

有办法吗?

dimo414

作为sh兼容是不是本身就是一个目标。您遇到什么问题需要与脚本一起使用sh根据您的推理,不同的选择可能会或可能不会足够。如果只需要让脚本在大多数现代环境中运行,则使用bash应该是完美的选择,并且实际上可能比使用更好sh,因为它sh映射到不同平台上的不同shell。在大多数现代环境中,它实际上不是它自己的二进制文件,而只是bashPOSIX兼容模式下,或在另一个shell中,例如dash

如果您真的只需要使现有的Bash脚本与shebang一起使用,则#!/bin/sh有以下几种选择:

  1. 只需将其运行为准,sh your_script.sh然后看看会发生什么-Bash是sh语法的超集,因此许多简单的Bash脚本都是有效的sh脚本。
  2. sh -n your_script.sh按照rojomoke的建议运行,它将在不实际执行脚本的情况下报告语法错误(但可能无法捕获所有问题)。
  3. 手动审核脚本中的无效语法(John B的Bashisms参考不是一个不好的起点),这显然不是一个好的解决方案,但在实践中,这是唯一可以确定的方法。如果这看起来令人生畏,那就是:)

如果您希望/需要支持sh,最好的选择就是简单地将脚本的shebang指定为#!/bin/sh-如果脚本在您需要的环境中表现理想,那么它(根据定义)是sh兼容的。

请注意,您可以编写sh仍不符合POSIX-compatible脚本,因为许多标准实用程序grep都有自己的POSIX兼容功能集,您也需要遵守这些功能。再次强调,符合POSIX本身并不是目的,我鼓励您确认在尝试符合该标准之前,您确实需要支持POSIX。

我问了一个相关的问题,您可能也会发现有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查Bootstrap Datepicker脚本是否已加载

来自分类Dev

如何检查Linux Shell脚本是否由cronjob执行?

来自分类Dev

Chrome扩展程序:检查内容脚本是否已注入

来自分类Dev

如何检查脚本是否存在并提供脚本来源

来自分类Dev

bootstrap.sh脚本是什么?

来自分类Dev

使用批处理脚本检查PowerShell脚本是否正在运行

来自分类Dev

执行之前检查python版本是否与脚本兼容

来自分类Dev

检查脚本是否成功运行?

来自分类Dev

如何确定shell脚本是用bash还是sh编写的

来自分类Dev

检查脚本是否以root用户身份执行?

来自分类Dev

bootstrap.sh脚本是什么?

来自分类Dev

Bash:测试原始脚本是否用`-x`运行

来自分类Dev

检查脚本是否正在运行?

来自分类Dev

检查bash脚本是否恰好具有两个作为目录的参数

来自分类Dev

Python嵌套字典,检查3个不同版本是否与键和值兼容

来自分类Dev

检查Ruby脚本是否成功完成

来自分类Dev

让cron检查bash脚本是否正在执行

来自分类Dev

检查脚本是如何启动的

来自分类Dev

如何检查init.d脚本是否正常工作?

来自分类Dev

检查脚本是否完成执行而不是退出

来自分类Dev

检查脚本是否正在运行

来自分类Dev

检查PHP脚本是否用作<img>源

来自分类Dev

如何检查我的脚本是否在crontab中成功运行

来自分类Dev

bash脚本是否通过引用设置变量?

来自分类Dev

bash脚本是否满足条件

来自分类Dev

我的 bash 脚本是否容易受到命令注入的影响?

来自分类Dev

检查 iOS 版本是否兼容从 iOS 3.0 到 IOS 4.0 或更高版本的 PHP

来自分类Dev

检查 bash 脚本是否在 bitbucket 管道中运行

来自分类Dev

我的 bash 脚本是否足够准确以检查图像列表是否在目录中的任何位置被引用?

Related 相关文章

热门标签

归档