用于测试系统是 Windows 还是 Unix 的命令

用于测试系统是 Windows 还是 Unix 的命令

我正在寻找 unix 中的 shell 命令,该命令具有在所有 unix 平台上统一的非零输出(例如,在 unix 系统上始终返回 1),并且在 Windows 中没有(或零值)输出。

我尝试过(在unix中):

sh echo 1

但这会返回:

cannot execute binary file

使用

echo 1

不符合这个标准,因为它在 Windows 和 Unix 中都会产生输出。

答案1

dir命令在 Linux 和 Windows 中都存在,可能适合这种情况。Windowsdir上的命令确实设置了脚本的退出代码。它还有一个优点,即它是一个非破坏性命令。

在 Linux 上,根据手册页,这些错误代码是可用的。

Exit status:
 0  if OK,
 1  if minor problems (e.g., cannot access subdirectory),
 2  if serious trouble (e.g., cannot access command-line argument).

答案2

SYSTEMROOT测试或环境变量是否存在SYSTEMDRIVE以确认您使用的是 Windows。如果您坚持采用真正的安全措施,请解析该值以确认您找到了C:或类似的驱动器号。

相关内容