我想为我的程序制作一个可执行文件。我们只是说它叫做番茄。程序将接受多个参数,并且一些参数可能包含空格,因此我将用引号括起它们。参数的一个例子是:
"Leonardo DiCaprio" "Will Ferrel" OtherName "Gwyneth Paltrow"
现在,这就是我的脚本:
#!/bin/bash
java -cp derived/tomato.jar:lib/* tomato.Main $*
我猜我需要改变'$ *',但我不确定是什么。当我在eclipse中运行它时,它工作正常,但是当我尝试使用我的可执行文件时,它不起作用..
答案 0 :(得分:1)
我猜我需要更改' $ *',但我不确定是什么。
事实上。您需要将其更改为"$@"
。双引号可防止参数进行分词和文件扩展。使用"$@"
代替"$*"
会导致参数彼此拆分,但这正是您所需要的。
例如,如果参数是(如您的示例中)Leonardo DiCaprio
,Will Ferrel
,OtherName
,Gwyneth Paltrow
,那么:
$*
扩展为Leonardo
,DiCaprio
,Will
,Ferrel
,OtherName
,Gwyneth
,{{1} } Paltrow
扩展为$@
,Leonardo
,DiCaprio
,Will
,Ferrel
,OtherName
,{{1} }(与之前相同)Gwyneth
扩展为Paltrow
(一个大论点)"$*"
扩展为Leonardo DiCaprio Will Ferrel OtherName Gwyneth Paltrow
,"$@"
,Leonardo DiCaprio
,Will Ferrel
(根据需要) OtherName
几乎总是你想要的。关于你唯一想要其中一个的时间,如果你正在修改现有的写得不好的代码,而这些代码依赖于其他代码的行为。这样的代码很脆弱,但通常很难修复。