パイプとコマンドの置き換え

パイプとコマンドの置き換え

Linuxのコマンドラインとパイプを使ってテストしようとしましたが、うまくいきませecho {1..3} | touchんでした。私は結果を得たtouch $(echo {1..3})

最初の例のように、echoによって生成されたリストをtouchにパイプできないのはなぜですか?

ベストアンサー1

回答いただいたSteeldriverのコメントありがとうございます。

パイプ演算子は、コマンドがstdinの引数を受け入れる場合にのみ機能します。この場合、touchやrmなどのコマンドは機能しません。別の解決策は、例に示すようにコマンド置換を使用することです。

touch $(echo {1..3})

または、xargsを使用して入力を標準入力からコマンド引数に変換すると、次のことができます。

echo {1..3} | xargs touch

とても簡単です。

おすすめ記事