스크립트가 있습니다. myScript
.
두 개의 매개변수가 필요합니다. myScript arg1 arg2
.
세 가지 인수 집합이 있다고 가정해 보겠습니다.
argA1 argB1
argA2 argB2
argA3 argB3
각 줄을 myScript로 파이프하는 방법이 있습니까? xargs를 사용하여 파일에 매개 변수 집합을 포함시키고 싶습니다. 무엇을 조사해야 할지 잘 모르겠습니다.
따라서 아래의 가짜 예와 같은 명령을 실행합니다.
cat myFile | xargs > myScript
다른 스크립트가 필요 없으며 명령줄의 명령만 있으면 됩니다.
답변1
오직:
xargs -l1 <myFile myScript
-l1
각 입력 라인에 대해 한 번씩 실행하고 xargs
해당 라인의 단어를 별도의 인수로 전달하도록 지시합니다.myScript
1
l
1
l
의 경우 xargs
단어는 공백으로 구분되며 따옴표를 사용하면 단어 내에 공백(또는 개행)을 포함할 수 있습니다. 그러나 , 및 인용은 대부분의 쉘처럼 xargs
지원되지만 구문 분석은 Bourne과 같은 쉘의 구문 분석과 다릅니다. 특히 no 와 only는 모두 백슬래시를 처리하지 않으며 줄 바꿈만 이스케이프할 수 있습니다."..."
'...'
\
"..."
'...'
\
예를 들어 myFile
다음이 포함될 수 있습니다.
word1.1 word1.2
"word 2.1" 'word 2.2'
"word'3.1" 'word"3.2'
'word"'"4'1" word\"4\'2
'word '\
5.1 "word "\
5.2
그리고
xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'
생산 예정:
First word: "word1.1", second word: "word1.2"
First word: "word 2.1", second word: "word 2.2"
First word: "word'3.1", second word: "word"3.2"
First word: "word"4'1", second word: "word"4'2"
First word: "word
5.1", second word: "word
5.2"
GNU 구현을 사용하면 xargs
이를 다음과 같이 개선할 수 있습니다.
xargs -l1 -r -a myFile myScript
이것의 장점은 stdin이 비어 myScript
있으면 myFile
실행되지 않고 단독으로 남겨질 수 있다는 것입니다.