通过shell脚本为可执行文件提供命令行参数

假设我有一个可执行文件xyz ,其中包含可变数量的命令行参数,以及一个包装器Korn shell脚本xyz.ksh 。 有没有一种简单的方法将所有的shell脚本parameter passing给可执行文件?

你需要使用:

"$@" 

在所有情况下都能正确的扩大参数。 这种行为在bash和ksh中都是一样的。

大多数情况下,$ *或$ @会给你你想要的。 但是,它们会扩展带有空格的参数。 “$ *”可以将所有参数缩减到一个。 “$ @”给你实际传递给包装器脚本的内容。

亲自看看(再次,在bash或ksh下):

 [tla ~]$ touch file1 file2 space\ file [tla ~]$ ( test() { ls $*; }; test file1 file2 space\ file ) ls: cannot access space: No such file or directory ls: cannot access file: No such file or directory file1 file2 [tla ~]$ ( test() { ls $@; }; test file1 file2 space\ file ) ls: cannot access space: No such file or directory ls: cannot access file: No such file or directory file1 file2 [tla ~]$ ( test() { ls "$*"; }; test file1 file2 space\ file ) ls: cannot access file1 file2 space file: No such file or directory [tla ~]$ ( test() { ls "$@"; }; test file1 file2 space\ file ) file1 file2 space file 

我想你正在寻找$ *variables: http : //www.well.ox.ac.uk/~johnb/comp/unix/ksh.html#commandlineargs

它在bash中被称为$ @,我想。

是。 使用$ *variables。 试试这个脚本:

 #!/bin/ksh echo $* 

然后用如下的方法调用脚本:

 scriptname abc foobar 

您的输出将是:

 abc foobar