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
とても簡単です。