私ははい/いいえ質問を含む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ステートメントでも使用します。