Java可执行脚本

时间:2014-05-11 02:27:20

标签: bash

我想为我的程序制作一个可执行文件。我们只是说它叫做番茄。程序将接受多个参数,并且一些参数可能包含空格,因此我将用引号括起它们。参数的一个例子是:

"Leonardo DiCaprio" "Will Ferrel" OtherName "Gwyneth Paltrow"

现在,这就是我的脚本:

#!/bin/bash

java -cp derived/tomato.jar:lib/* tomato.Main $*

我猜我需要改变'$ *',但我不确定是什么。当我在eclipse中运行它时,它工作正常,但是当我尝试使用我的可执行文件时,它不起作用..

1 个答案:

答案 0 :(得分:1)

  

我猜我需要更改' $ *',但我不确定是什么。

事实上。您需要将其更改为"$@"。双引号可防止参数进行分词和文件扩展。使用"$@"代替"$*"会导致参数彼此拆分,但这正是您所需要的。

例如,如果参数是(如您的示例中)Leonardo DiCaprioWill FerrelOtherNameGwyneth Paltrow,那么:

  • $*扩展为LeonardoDiCaprioWillFerrelOtherNameGwyneth,{{1} }
  • Paltrow扩展为$@LeonardoDiCaprioWillFerrelOtherName,{{1} }(与之前相同)
  • Gwyneth扩展为Paltrow(一个大论点)
  • "$*"扩展为Leonardo DiCaprio Will Ferrel OtherName Gwyneth Paltrow"$@"Leonardo DiCaprioWill Ferrel(根据需要)

OtherName几乎总是你想要的。关于你唯一想要其中一个的时间,如果你正在修改现有的写得不好的代码,而这些代码依赖于其他代码的行为。这样的代码很脆弱,但通常很难修复。