我想编写一些脚本(bash),这些脚本应该适用于所有类型的linux(主要是在ubuntu,centOs,redhat上)。
如何使脚本独立于OS类型?
是否有一些在线转换器使脚本与其他版本的Linux兼容?
或者处理这种情况的最佳方法是什么。
答案 0 :(得分:2)
仅使用POSIX shell标准功能。在此链接上,您可以查看有关此主题的更多信息以及如何验证shell是否符合POSIX:
https://unix.stackexchange.com/questions/48786/how-can-i-test-for-posix-compliance-for-shell-scripts
答案 1 :(得分:0)
首先。对于您运行的命令,您必须确保您的脚本与某些shell版本兼容。
二。您可以测试运行脚本的兼容性,并检查它是否正在执行它想要执行的操作。
第三。如果您要在不同的发行版中运行/读取/写入某些文件/目录,您必须编写一个预运行脚本,其目的是检查所提到的文件/目录的路径,并将它们设置为您的脚本将使用的变量。
例如:您的脚本需要运行一些二进制文件,但您不知道它到底在哪里。您检查并发现此二进制文件位于不同的位置,具体取决于发行版:
1-在Ubuntu中位于/usr/bin/somebinary
2-在CentOs中位于/bin/somebinary
因此,您的预运行脚本会执行以下操作:
SOMEBINARY_FULLPATH=$(whereis somebinary)
或类似的东西。如果相同的二进制文件具有不同的参数,则会执行相同的操作,具体取决于您运行的发行版(例如,在Linux和* BSD中的grep版本之间会注意到)
最后,使用变量来运行命令。
问候。