xargsを使用してコマンドの途中で複数の引数を渡す方法はありますか?
javaoptions.txt
たとえば、デフォルトのJavaオプションセットを含むファイルがあります。私は次のことができるようにしたいと思います。
xargs -I % java % ClassName < javaoptions.txt
すべてのオプションをコマンドに渡します。ただし、これを試みると、複数のコマンドを使用して毎回1つのオプションを渡します。
とにかく実行中のソースコードは変更できません。
答え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
あなたの(またはそれに対応するシェル)に追加すると、以下を実行できます。
runJava Classname
走る
java -Xmx4g -Djava.io.tmpdir=/tmp/foo Classname
答え2
簡単に:
xargs sh -c 'exec java "$@" ClassName' -- < javaoptions.txt