2011-01-23 21 views
19

我想運行我在命令行(linux和mac)上創建的Java程序。我不想一直輸入「java」和參數,所以我正在考慮創建包裝腳本。這樣做的最好方法是什麼,以便他們在任何地方工作?我也希望能夠傳遞參數。我正在考慮用「移位」來做到這一點(刪除第一個參數)。如何將包裹腳本參數傳遞給Java應用程序?

有沒有更好的方式來做到這一點,而不使用腳本呢?也許創建一個不需要通過「java」命令調用的可執行文件?

回答

42

假設你正在使用的外殼,與Bourne shell的兼容;例如SH時,bash和ksh,等等,以下包裝將通過所有的命令行參數傳遞給java命令:

#!/bin/sh 
OPTS=... 
java $OPTS com.example.YourApp "[email protected]" 

[email protected]擴展爲shell腳本其餘的參數,並把引號它導致參數請單獨引用,以便以下內容有效:

$ wrapper "/home/person/Stupid Directory/foo.txt" 
+1

有人可以解釋爲什麼`「$ @」`比$「*」更好嗎? – Segfault 2015-03-30 15:51:20

4

你可以create a shell scriptaccepts arguments。在你的shell腳本,它會是這個樣子: -

java YourApp $1 $2 

在這種情況下,YourApp接受兩個參數。如果你的shell腳本稱爲app.sh,你可以這樣執行它: -

./app.sh FirstArgument SecondArgument 
+2

不幸的是,如果使用帶引號的參數調用包裝腳本,則會中斷;例如包含空格的路徑名。它需要在`$ 1`,`$ 2`等附近加雙引號 – 2011-12-02 01:54:55

相關問題