我有一个定义脚本的地方#!/bin/bash
,我想检查一下此脚本是否与兼容#!/bin/sh
。
有办法吗?
作为sh
兼容是不是本身就是一个目标。您遇到什么问题需要与脚本一起使用sh
?根据您的推理,不同的选择可能会或可能不会足够。如果只需要让脚本在大多数现代环境中运行,则使用bash
应该是完美的选择,并且实际上可能比使用更好sh
,因为它sh
映射到不同平台上的不同shell。在大多数现代环境中,它实际上不是它自己的二进制文件,而只是bash
在POSIX兼容模式下,或在另一个shell中,例如dash
。
如果您真的只需要使现有的Bash脚本与shebang一起使用,则#!/bin/sh
有以下几种选择:
sh your_script.sh
然后看看会发生什么-Bash是sh
语法的超集,因此许多简单的Bash脚本都是有效的sh
脚本。sh -n your_script.sh
按照rojomoke的建议运行,它将在不实际执行脚本的情况下报告语法错误(但可能无法捕获所有问题)。如果您希望/需要支持sh
,最好的选择就是简单地将脚本的shebang指定为#!/bin/sh
-如果脚本在您需要的环境中表现理想,那么它(根据定义)是sh
兼容的。
请注意,您可以编写sh
仍不符合POSIX的-compatible脚本,因为许多标准实用程序grep
都有自己的POSIX兼容功能集,您也需要遵守这些功能。再次强调,符合POSIX本身并不是目的,我鼓励您确认在尝试符合该标准之前,您确实需要支持POSIX。
我问了一个相关的问题,您可能也会发现有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句