2017-07-23 290 views
2

我在Debian Stable Linux中工作。我正在嘗試使用腳本,因此每次使用保存在單獨文件夾中的類文件時,都不必輸入-cp /home/auser/bin/使用java classpath運行腳本

我創建了一個腳本文件,並保持它的路徑:

$ which japp.sh 
/home/auser/bin/japp.sh 

此腳本包含:

#! /bin/bash 
# -cp for classpath: 
java -cp /home/auser/bin/ Jmyclass $1 $2 $3 

Jmyclass.class也有在/home/auser/bin/目錄。

然而,當我命令:

$ japp.sh first second third_arg 

我得到一個錯誤(從Jmyclass)表示參數不被Jmyclass收到的。

USAGE: java Jmyclass <d1name> <d2name> <mode> 

問題在哪裏,我該如何糾正它?謝謝你的幫助。


編輯:我剛剛意識到腳本不工作,如果參數1和/或2有空格的,即使我將它們用雙引號:

japp.sh "first arg" "second arg" third_arg 

這怎麼可能糾正?

+0

如果你用'echo「替換第三行java -cp/home/auser/bin/Jmyclass $ 1 $ 2 $ 3」',你會得到什麼? – Guest

+0

它顯示適當的命令,所有3個參數就位。我剛剛意識到,如果參數中有空格,腳本不起作用,即使我將它們用雙引號(「first arg」)括起來。 – rnso

回答

0

在調用腳本時使用的引號不包含在參數中。參數是引號內的部分。要解決這個問題,您可以在腳本中添加引號。

#! /bin/bash 
# -cp for classpath: 
java -cp /home/auser/bin/ Jmyclass "$1" "$2" "$3" 

請注意,您仍然需要時調用腳本,以防止它們被打破了空間的兩倍,報價參數。

+0

是的,這個工程。 – rnso