[英]How to set Java classpath in bash script used in Ubuntu and Windows (Cygwin)
我正在編寫一個bash腳本,它應該執行一些需要特定類路徑的Java應用程序。
此外,這個腳本應該可以在Ubuntu和Windows(Cygwin)上執行。
問題: Windows上的分隔符是“ ; ”,Ubuntu上的分隔符是“ : ”。 這導致java -cp A.jar;B.jar Main
在Windows上(當使用cygwin時,因為它使用java -cp A.jar:B.jar Main
)和java -cp A.jar:B.jar Main
在Ubuntu上。
問題:如何在bash腳本中檢測哪個底層操作系統正在運行/使用哪個java classpath分隔符?
一種天真(但快速實現)的方法:首先運行uname -a
並將其推送到變量中。 然后檢查該輸出是否包含“Ubuntu”。
如果是這樣,你應該使用“:”作為分隔符; 除此以外 ”;” 應該做。
如果你想在未來為其他平台做好准備; 而不是做一個簡單的if / else; 你可能想檢查一下uname -a
對cygwin的評價; 使用bash switch語句設置一些$SEPARATOR_CHAR
變量。
只是為了提供最終解決方案:
我剛剛在運行cygwin的Ubuntu,Mac和Windows上測試了uname -s
,並提出了以下腳本:
if [ "$(uname)" == "Darwin" ]; then
# Do something under Mac OS X platform
SEP=":"
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
# Do something under GNU/Linux platform
SEP=":"
elif [ "$(expr substr $(uname -s) 1 6)" == "CYGWIN" ]; then
# Do something under Windows NT platform
SEP=";"
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.