سؤال

حسنًا ، لقد حاولت البحث عن هذا على Google ولا يمكنني العثور على إجابة. ما أحاول القيام به هو إنشاء بيان حالة في Bash ولكن إذا دخل المستخدم إلى رقم مختلف عن القائمة ، فهو يخرج من البرنامج النصي. كيف أجعله يعطي خطأ ثم اطلب من المستخدم تحديد أحد الخيارات؟

على سبيل المثال ، بيان حالتي

case $ans in
1) echo "Running Project 1..."
   sleep 2
   ./project1.sh
;;
2) echo "Running Project 2..."
   sleep 2
   ./project2.sh
;;
Qq) echo "Exiting"
    exit
;;
esac

لذلك أي خيارات أخرى غير 1 ، 2 ، QQ سوف تعطي خطأ يقول اختيار غير صالح ، حاول مرة أخرى.

هل كانت مفيدة؟

المحلول

تحتاج إلى حلقة فترة ومتغير منطقي من هذا القبيل:

flag = true
while [  $flag ]; do
    case $ans in
        1) echo "Running Project 1..."
           sleep 2
           ./project1.sh
        ;;
        2) echo "Running Project 2..."
           sleep 2
           ./project2.sh
        ;;
        Qq) echo "Exiting"
            flag = false
        ;;
    esac
done
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top