コマンドリストの実行を一時停止する

コマンドリストの実行を一時停止する

次のような bash コマンドのリストを含むファイルがあります。

echo 'foobar'
echo 'helloworld'
echo 'ok'

そして、これらのコマンドを次のようにパイプするだけで実行できます/bin/bash

cat commands | /bin/bash

さて、実行を途中で一時停止し、ユーザー入力を待つにはどうすればよいでしょうか? を使用するとreadうまくいかないようです。

echo 'foobar'
echo 'helloworld'
read -p 'Press ENTER to continue'
echo 'ok'

答え1

次のように実行します。

/bin/bash commands

ファイルbashを にパイプすると、ファイルは の stdin を経由して移動しますbash。このような場合read、 stdin からの読み取りは、ターミナルからではなく、パイプされたストリームから読み取ります。 を消費しますecho 'ok'。 への引数としてファイルを指定すると、bash引き続き実行されますが、今回は stdin はリダイレクトされません。

次のように実行したいと仮定します。比較bash script.sh実行との違いは何ですか./script.sh?

関連情報