パイプを介して複数のパラメータを渡す

パイプを介して複数のパラメータを渡す

次の形式で無制限の行を出力するコマンドがあります。

$cmd1
word1 text with spaces and so on
word2 another text with spaces and so on

word最初の行が1つのパラメータに渡され、残りのテキストが別のパラメータに渡されるように、各行を別のコマンドに渡したいと思います。このように:

$cmd2 --argword=word1 --argtext="text with spaces and so on"
$cmd2 --argword=word2 --argtext="another text with spaces and so on"

ベストアンサー1

最後の行に改行文字があり(そうでなければ行が失われます)、cmd2合理的な値に設定されていると仮定すると、shimを一緒にまとめたシェルコードは次のようになります。

#!/bin/sh
IFS=" "
while read word andtherest; do
    $cmd2 --argword="$word" --argtext="$andtherest"
done

残りのフィールドはすべてandtherest各アクションに集中する必要があるためですread

おすすめ記事