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
귀하의 (또는 이에 상응하는 쉘)에 추가하면 다음을 실행할 수 있습니다.
runJava Classname
달리기
java -Xmx4g -Djava.io.tmpdir=/tmp/foo Classname
답변2
간단히:
xargs sh -c 'exec java "$@" ClassName' -- < javaoptions.txt