这个问题建立在我提出的上一个问题之上 Determine OS from a single command line operation
当我提供主机名时,我有一个能够在远程系统上执行命令的工具。 远程计算机可以是Windows或Linux。 执行命令后,我应该能够根据命令的结果确定操作系统。
前面提供的解决方案是uname,它在linus操作系统上打印“Linux”并且在Windows上失败。 它在理论上工作得很好,但我遇到的问题是任何命令失败都会导致该工具崩溃,因为在这种情况下Windows会返回非零返回码。
所以为了解决这个问题,我面前有两个选择
我不确定第一个选项是否可行,但对其中任何一个选项的解决方案都有帮助
答案 0 :(得分:3)
答案 1 :(得分:2)
如果你能根据输出作出决定,我still think echo "$PATH"
是正确的想法。
由于在Linux上使用shell(bash
,tcsh
,ksh
等),在Windows上使用cmd.exe
或powershell
,因此会有很大不同结果
使用linux / etc。 shell你会得到一个路径字符串。
使用cmd.exe
,您将获得"$PATH"
。
使用powershell
,您将获得空字符串。
该空字符串结果在技术上对linux / etc有效。因为你可以在那里有一个空路径,但是你可以使用"${PATH:-linux}"
代替它,对于$PATH
派生的shell中的空(或未设置)sh
变量,它将获得你linux
并且仍然会从powershell
获取一个空字符串(尽管这似乎在csh
派生的shell失败了。)