シェルスクリプトでユーザーから複数のアイテムを読み取ろうとしていますが、うまくいきません。最初にファイルのリストを読み取り (stdin パイプから読み取られる)、次に 2 回読み取って対話的に 2 つの文字列を取得することを意図しています。私がやろうとしているのは、電子メールに添付するファイルのリスト、次に件名、最後に電子メールの本文を読むことです。
これまでのところ、私はこれを持っています:
photos=($(< /dev/stdin))
echo "Enter message subject"
subject=$(< /dev/stdin)
echo "Enter message body"
body=$(< /dev/stdin)
(さらに、簡潔にするために省略したエラー チェック コード)
ただし、これはおそらく 2 番目と 3 番目のリダイレクトが EOF を取得するため、空の件名と本文を取得します。
<&- などを使用して標準入力を閉じて再度開き直そうとしましたが、そのようには機能しないようです。
「while; read line」ループを使用してファイルのリストに区切り記号を使用し、区切り記号が検出されたときにループから抜け出そうとしました。しかし、それもうまくいきませんでした(??)。
このようなものを構築する方法はありますか?