スクリプトにはい/いいえ質問が複数ありますか? [閉鎖]

スクリプトにはい/いいえ質問が複数ありますか? [閉鎖]

私ははい/いいえ質問を含むbashスクリプトを書いていますが、もう一つのはい/いいえ質問を含めたいと思います。スクリプトは1つのYes / No質問を処理できますが、2つ以上のYes / No質問をどのように処理できますか?

はい/いいえスクリプトは次のとおりです。

read -p "Do you want to install this programme? " yn 
case $yn in 
[Yy]* ) sudo apt-get install "$programme";; 
[Nn]* ) exit;; 
* ) echo "Please answer yes or no. ";; 
esac 
exit

答え1

ここで発生する可能性のある問題は範囲の1つです。つまり、変数の値はスクリプトの特定のポイントに設定され、その変数の値は常に保持されます。後で変数が定義されているので(つまり値があるため)、条件が期待どおりに評価されるという問題に直面します。

以下は、例を提供するコードサンプルです。

foo ()
{
    local yn
    read -p "Do you want to install this programme? " yn
    case $yn in
        [Yy]* ) echo $yn;;
        [Nn]* ) exit;;
        * ) echo "Please answer yes or no. ";;
    esac
}
foo
echo $yn

このコード例を実行すると、$ ynがfoo()の範囲内でエコーされると、入力した内容が返されますが、その範囲外では空です。 foo関数のローカル変数({}など)を宣言すると、外部では定義されません。互いに競合せずに変数名を再利用するには、次のようにします。

答え2

質問を理解したかどうかはわかりませんが、わかります。

後でスクリプトを読み取るためにこれらの選択肢を維持するには、質問ごとに異なる変数名を使用します。

つまり。そこにあるものをコピーして貼り付けて、たとえば変更してから、yn変数yn_2をCaseステートメントでも使用します。

関連情報