2017-07-23 62 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