Dmi*_*nov 1 bash jenkins os-detection
我有一个依赖于$OSTYPE变量值的遗留脚本。该脚本期望在 Solaris 上该值为“SunOS”,而在 AIX 上该值为“AIX”。对于 Linux,它根据正则表达式检查变量,其中大写值以“LINUX”开头。
我尝试从 Jenkins 运行此脚本,发现值不同:Solaris 返回“solaris2.11”,而 AIX 返回“aix7.1.0.0”。我echo $OSTYPE在 Jenkins 运行脚本的同一台服务器上运行了该命令,并且得到了“SunOS”/“AIX”。
所以我的主要问题是:这种差异的根源是什么(系统如何形成这个变量的值,以及为什么 Jenkins 具有与从 bash 运行的 echo 不同的值)。一个附带问题是哪种是可靠的使用方式$OSTYPE。
最可靠的方法是使用命令:
uname
Run Code Online (Sandbox Code Playgroud)
有不同的选择。你看到的结果只是命令uname。如果您想了解有关版本、架构的更多详细信息,可以使用
uname -a
Run Code Online (Sandbox Code Playgroud)
该变量OSTYPE将 OS TYPE 的值存储在 shell 变量中。这取决于 shell 存储的值。
例如,如果您使用bash,您将获得OSTYPE变量的一个值, in zsh,一些其他值,并且 in sh,您可能无法获得任何值本身。
bash请参阅下面使用和的区别zsh。
巴什
$ echo $OSTYPE
darwin18
Run Code Online (Sandbox Code Playgroud)
桀骜
% echo $OSTYPE
darwin18.0
Run Code Online (Sandbox Code Playgroud)
jenkins因此,当您获得不同的值时,您可能需要检查 shell 正在使用什么OSTYPE
| 归档时间: |
|
| 查看次数: |
1959 次 |
| 最近记录: |