複合コマンドをパイプできますか?

複合コマンドをパイプできますか?

私の質問は:パイプはどうすればいいですか/どうすればいいですか?複合コマンド( { list; })?付録Bを参照してください。付録Aは比較目的で提供されています。

付録I:

$ cat << EOF | xargs -n 1 echo           
foo
bar
qux
EOF
foo
bar
qux

添付B:

$ cat << EOF | xargs -n 1 sh -c '{ var="$1"; echo "$var"; }'
foo
bar
qux
EOF


man sh:

-c               Read commands from the command_string operand
                            instead of from the standard input.  Special parame‐
                            ter 0 will be set from the command_name operand and
                            the positional parameters ($1, $2, etc.)  set from
                            the remaining argument operands.

ベストアンサー1

問題はsh -c "something"別のパラメータが必要であるということです$0

2番目の例では1つは指定されていないため、空の文字列であり、$13つの空白行が表示されます。使用

cat << EOF | xargs -n 1 sh -c '{ var="$1"; echo "$var"; }' inlineshellscript
foo
bar
qux
EOF
food
bar
qux

通常、代わりに使用$0します。inlineshellscriptshinlineshellscript

おすすめ記事