我有一個產生輸出這樣的命令:如何命令的輸出作爲幾個參數傳遞給另一個命令
$ ./command1
word1 word2 word3
我想這三個字作爲參數傳遞給另一個這樣的命令:
$ command2 word1 word2 word3
如何將command1輸出作爲三個不同參數$ 1 $ 2 $ 3傳遞給command2?
我有一個產生輸出這樣的命令:如何命令的輸出作爲幾個參數傳遞給另一個命令
$ ./command1
word1 word2 word3
我想這三個字作爲參數傳遞給另一個這樣的命令:
$ command2 word1 word2 word3
如何將command1輸出作爲三個不同參數$ 1 $ 2 $ 3傳遞給command2?
似乎分開命令1的輸出,並將其發送到command2的三個不同的參數最好的方法是使用帶有-t選項xargs的這是通過所有作爲參數是這樣的:
$ ./command1 | xargs -t command2
只需使用不帶引號的命令替換:
$ ./command2 $(./command1)
然而,這也科目command1
的輸出路徑名的產生,因此,如果輸出可能包括像*.txt
,你的風險是正擴展到多個單詞之前被傳遞到command2
。在這種情況下,你需要使用
$ read arg1 arg2 arg3 <<< "$(./command1)"
$ ./command2 "$arg1" "$arg2" "$arg3"
或
$ read -a args <<< "$(./command1)"
$ ./command2 "${args[@]}"
到輸出分割成3個字,而不對它們進行路徑名的產生。
這將不起作用如果command1
輸出看起來像
"word1a word1b" word2
,你希望能夠到兩個參數,word1a word1b
和word2
傳遞給command2
,但獲得這種權利是充分棘手要求更多關於什麼command1
可以輸出以提供正確的解決方案的細節。
command1以純文本格式輸出輸出:hostname:port username password。 command2假設再次讀取三個參數,如主機名:端口用戶名密碼 – Addy 2014-11-04 18:52:09
在這種情況下,我會推薦使用'read'的版本。我假設主機,端口和用戶名都不能包含任何空格,但我會毫不猶豫地對密碼做任何假設。 (如果密碼開始或以空白結束,它會失敗,但我沒有辦法從'command1'的輸出中檢測到這一點)。 – chepner 2014-11-04 19:12:14