なぜxargsを固執するのですか? bash はこれをうまく処理できます:
p=(`echo "param1 param2"`); echo ${p[0]} ${p[1]}
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
(私のシェルでは []
をエスケープする必要があります 、走行距離は異なる場合があります)。
検索からこれを見つけた人にとって、受け入れられた答えは私にとってはうまくいきませんでした.
echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]
生成:
[param 1] [param 1]
[param 2] [param 2]
これは、元の投稿者が xargs を複数のエンティティで読み取り、それらを分離し、それらを単一のコマンド (OP の「エコー」) に個別のパラメーターとして送信するという要件を満たしていません。 Xargs は、この種のタスク用に設計されていません!
bash の回答は機能します。
p=(`echo "param1 param2"`); echo [${p[0]}] [${p[1]}]
生成:
[param1] [param2]
ただし、このソリューションは複数の行では機能しません。
行のペアを引数として単一のコマンドに送信するための bash の正しい解決策は次のとおりです。
(echo 'param 1'; echo 'param 2'; echo 'param 3'; echo 'param 4') | while read line1; read line2; do echo "[$line1] [$line2]"; done
生成:
[param 1] [param 2]
[param 3] [param 4]
GNU Parallel の回答は機能しますが、GNU Parallel を作成してインストールする必要があります。 (Ubuntu に同梱されているバージョンは GNU Parallel ではありません。)