以下のスクリプトでは-潜在的に悪いスクリプトの実行を続行することを確認するようユーザーにプロンプトを表示します-ユーザーYがプロンプトで入力すると、caseブロックから抜け出し、while再びループに送り返されます。
#! /bin/bash
set -e
echo
echo "bad install start"
echo "-----------------------------------------"
while true; do
read -p "this script will probably fail - do you want to run anyway?" yn
case $yn in
[Yy]*)
##### WHAT GOES HERE?? #####
;;
[Nn]*)
exit ;;
*)
echo "answer y or n" ;;
esac
echo "script has broken out of case back into while loop"
done
echo -e "\e[33m Installing bad packagename \e[0m"
apt-get install sdfsdfdfsd
echo "rest of script - will i keep running?"
ときにn入力され、スクリプトは、所望の全体として存在します。Yスクリプトが入力されたときに、ブロックがwhileブロックcase と whileブロックの両方から抜け出すが、完全には終了しないようにする方法を知りたい。それを行うためにプレースホルダーに入れることができるものはありますか(「ここに何が??」)。
私が最初に答えてからコードを編集しましたが、どのような場合でもそうで
—
dhag
$TEST=1あることTEST=1に注意してください。スクリプトはこの変更で動作する可能性が非常に高いです。
doh、はい、テスト時にそれを見ました!
—
-the_velour_fog
@dhag編集を改善したと思います。ご覧ください。あなたの目標は、受け入れられた答えがうまく適合するものにコードを書き直すことだと思われますが、今はもっと近いと思います。
—
デロバート
@derobert:あなたの編集は私には見栄えが良いです。それは確かに質問を明確にします。
—
ダグ
[Yn]*)。おそらくあなたが意味した[Yy]*)。