Windows 检测在Cygwin中运行的Shell脚本

Windows 检测在Cygwin中运行的Shell脚本,windows,bash,unix,shell,cygwin,Windows,Bash,Unix,Shell,Cygwin,是否有一种简单的方法可以检查脚本是否在Cygwin中运行。我们有一个脚本,它调用一个实用程序,该实用程序希望传递的路径是windows,因此如果我们在Cygwin中,我们必须将路径转换为windows路径。检查uname实用程序的输出您可以使用uname实用程序。发件人: -o、 --操作系统 打印操作系统 示例代码: if [ `uname -o` = "Cygwin" ] then # Cygwin specific stuff else # Other UNIX (Linu

是否有一种简单的方法可以检查脚本是否在Cygwin中运行。我们有一个脚本,它调用一个实用程序,该实用程序希望传递的路径是windows,因此如果我们在Cygwin中,我们必须将路径转换为windows路径。

检查
uname
实用程序的输出您可以使用
uname
实用程序。发件人:

-o、 --操作系统
打印操作系统 示例代码:

if [ `uname -o` = "Cygwin" ]
then
    # Cygwin specific stuff
else
    # Other UNIX (Linux, etc.) specific stuff
fi

合并一些注释并删除不推荐的反勾号会导致:

#!/bin/bash
OS_NAME=$(uname -s)
OS_NAME=${OS_NAME:0:6}

if [[ "$OS_NAME" = "CYGWIN" ]]
then
    # Cygwin specific stuff
else
    # Other UNIX (Linux, etc.) specific stuff
fi

这适用于ksh和bash

#!/bin/ksh
case "$(uname -s)" in
    CYGWIN*) echo This is Cygwin ;;
    *) echo This is not Cygwin ;;
esac

但是(BSD uname)不支持
-o
标志。是的,如果您需要超级便携,我不建议使用
-o
,因为太多的*nix版本都无法识别它。一些
-s
-r
的组合应该可以做到这一点,这些标志从时间的黎明起就一直存在。