`...bash`のベストプラクティスでスクリプトインタラクションを再取得するには?

`...bash`のベストプラクティスでスクリプトインタラクションを再取得するには?

次の簡単なスクリプトがあるとしますquestion

#!/bin/bash

read -rp "What's your name?" ans

echo "Your name is $ans"

cat私たちの例を試してみましょう

cat question | bash

スクリプトファイルの内容をBashの標準入力に提供し、それをコマンドとして実行します。実行すると、bashの標準入力が使用されるため、パイプの前に配置されていない限り、パイプの外側のものは標準入力に入力できません。

これを軽減するための1つのオプションは、スクリプトファイルの内容をダウンロードして最初にシェルに渡してから実行することです。

bash -c "$(cat ./question)"

私が見つけた構文のもう1つのオプション... | bashは、スクリプトで現在のプロセスを次のように標準入力が端末からサブシェルにラップされ、リダイレクトされる新しいプロセスに置き換えると機能することです。

#!/bin/bash

(
 exec < /dev/tty

 read -rp "What's your name?" ans

 echo "Your name is $ans"
)

他のオプションが何であるか、ベストプラクティスが何であるかを知りたいです。

関連情報