echoとcatの実行時間にこのような違いがあるのはなぜですか?
回答この質問は、私は別の質問をさせて: 私は、次のスクリプトは、同じことを行う2つ目は、最初のものを使用しているため、はるかに高速であるべきと思ったcat何度もファイルを開く必要がなく、二つだけのファイルを開きます一度だけ変数をエコーします: (正しいコードについては、更新セクションを参照してください。) 最初: #!/bin/sh for j in seq 10; do cat input done >> output 第二: #!/bin/sh i=`cat input` for j in seq 10; do echo $i done >> output 入力は約50メガバイトです。 しかし、2番目の方法を試したときは、変数のエコーiが大規模なプロセスだったため、遅すぎました。また、2番目のスクリプトで問題が発生しました。たとえば、出力ファイルのサイズが予想よりも小さかったです。 私はまたのmanページを確認echoし、catそれらを比較します: echo-テキストの行を表示します cat-ファイルを連結し、標準出力に出力します しかし、違いはありませんでした。 そう: なぜ2番目のスクリプトでcatがとても速く、エコーがとても遅いのですか? それとも変数の問題ですiか?(そのマニュアルページで echoは「テキスト行」と表示されると言われているので、i。のような非常に長い変数ではなく、短い変数に対してのみ最適化されていると思います。しかし、それは単なる推測です。) そして、使用するときに問題が発生したのはなぜechoですか? 更新 間違って使用するseq 10代わりに使用しました`seq 10`。これは編集されたコードです: 最初: #!/bin/sh for j …