有没有办法使用 xargs 在命令中间传递多个参数?
例如,我有一个文件javaoptions.txt
,其中包含一组默认的 Java 选项。我希望能够做类似的事情
xargs -I % java % ClassName < javaoptions.txt
并将所有选项传递给一个命令。然而,如果我尝试这样做,它会使用多个命令,每次传递一个选项。
无论如何,我无法修改正在执行的源代码
答案1
如果我理解正确的话,您想将 的内容插入javaoptions.txt
到您的 Java 命令中。如果是这样,xargs
那就没有帮助了。这是为了在另一个命令的每一行输出上运行相同的命令。你需要的只是这里
java $(cat javaoptions.txt) ClassName
(...假设没有选项包含嵌入的空格或通配符等)
然而,就我个人而言,我会为此编写一个函数,将选项存储在数组中,这将允许我使用包含空格的选项:
runJava(){
javaOpts=( -Xmx4g -Djava.io.tmpdir=/tmp/foo ) ## random example
java "${javaOpts[@]}" "$@" ## run the java command with the options
}
将其添加到您的~/.bashrc
(或 shell 的等效项)中,然后您可以运行:
runJava Classname
跑步
java -Xmx4g -Djava.io.tmpdir=/tmp/foo Classname
答案2
简单地:
xargs sh -c 'exec java "$@" ClassName' -- < javaoptions.txt