我正在尝试使用Cygwin来测试将在Linux环境中运行的Java应用程序的启动脚本。
当我指定一个boothclasspath或Classpath时,我需要使用特定于操作系统的路径分隔符“;”用于Windows,“:”用于Linux。发生这种情况是因为Java仍然是本机Windows应用程序并使用本机OS路径分隔符(Cygwin List Path Seperator)
shell脚本中是否有任何方法可以检测我正在使用的操作系统(或者如果我在CYGWIN中运行),并指定正确的路径分隔符。
我正在尝试设置以下内容:
MAVEN_OPTS="-Xbootclasspath/a:test/resources:live/resources"
在Windows上,它需要是: MAVEN_OPTS = “ - Xbootclasspath / A:测试/资源;活/资源”
答案 0 :(得分:5)
在这里找到答案:Detect OS from a bash script (Using $OSTYPE)
PATHSEP=":"
if [[ $OSTYPE == "cygwin" ]] ; then
PATHSEP=";"
fi
MAVEN_OPTS="-Xbootclasspath/a:test/resources${PATHSEP}live/resources"
答案 1 :(得分:4)
您可以使用uname(1)
来测试您是否正在运行Cygwin,例如:
if uname | grep -iq cygwin; then
# use ; for path separator
else
# use : for path separator
fi