簡體   English   中英

如何在Ubuntu和Windows(Cygwin)中使用的bash腳本中設置Java類路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM