Bash
將值列表傳送到 bash 腳本
我有一個腳本。
myScript
.它需要兩個參數。
myScript arg1 arg2
.假設我有三組論點。
argA1 argB1 argA2 argB2 argA3 argB3
有沒有辦法將每一行傳輸到 myScript. 我願意在一個文件中包含一組 args,也許使用 xargs。不確定要調查什麼。
所以我會像下面的假例子一樣執行命令:
cat myFile | xargs > myScript
沒有另一個腳本,只有命令行上的命令。
只是:
xargs -l1 <myFile myScript
-l1
告訴每個輸入xargs
行執行一次,該行上的單詞作為單獨的參數傳遞。myScript``1
l``1
l
對於
xargs
, 單詞用空格分隔,並且您仍然可以通過使用引號在單詞中包含空格(甚至換行符)。但是請注意,雖然xargs
支持"..."
,'...'
and\
像大多數 shell 一樣引用,但它的解析與 Bourne-like shell 的解析不同。特別是,既沒有也沒有反斜杠處理,"..."
只能'...'
轉義\
換行符。例如,
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
這樣做的好處是讓標準輸入保持不變並且
myScript
如果myFile
為空則不執行。