bashスクリプトを書くとき。npm、composer などの別のプログラムを開くコマンドを実行している場合がありますが、同時にread
、ユーザーにプロンプトを表示するために使用する必要があります。
この種のエラーに遭遇することは避けられません:
read: read error: 0: Resource temporarily unavailable
いくつかの調査を行った後、bash スクリプトの STDIN を操作するプログラムの STDIN を /dev/null にパイプすることで解決策があるようです。
何かのようなもの:
npm install </dev/null
他の調査では、STDIN がある種のブロッキング/非ブロッキング状態に設定されており、プログラムの終了後にリセットされていないという事実と関係があることが示されています。
問題は、STDIN を操作するプログラムの影響を受けず、STDIN を /dev/null にリダイレクトする必要があるプログラムを探す必要がなく、ユーザープロンプト入力を読み取るための、ある種の絶対確実でエレガントな方法があることです。これらのプログラムの STDIN を使用する必要さえあるかもしれません!