أداء إجراءات متعددة
في إصدارات سحق قبل 4.0 ، حقيبة سمح بتنفيذ إجراء واحد فقط على مباراة ناجحة. بعد مطابقة ناجحة ، سينتهي الأمر. نرى هنا نصًا يختبر شخصية:
#! / بن / باش
# case4-1: اختبر شخصية
read -n 1 -p "اكتب حرفًا>" صدى
حالة $ REPLY في
[[: upper:]]) صدى "'$ REPLY' هي الأحرف الكبيرة." ؛؛
[[: less:]]) صدى "'$ REPLY' هي الأحرف الصغيرة." ؛؛
[[: alpha:]]) صدى "$ REPLY" أبجدي. " ؛؛
[[: digit:]]) صدى "'$ REPLY' هو رقم." ؛؛ [[: graph:]]) صدى "'$ REPLY' هو حرف مرئي." ؛؛
[[: punct:]]) صدى "'$ REPLY' هو رمز ترقيم." ؛؛ [[: space:]]) صدى "'$ REPLY' هو حرف مسافة بيضاء." ؛؛ [[: xdigit:]]) صدى "'$ REPLY' هو رقم سداسي عشري." ؛؛
ESAC
#! / بن / باش
# case4-1: اختبر شخصية
read -n 1 -p "اكتب حرفًا>" صدى
حالة $ REPLY في
[[: upper:]]) صدى "'$ REPLY' هي الأحرف الكبيرة." ؛؛
[[: less:]]) صدى "'$ REPLY' هي الأحرف الصغيرة." ؛؛
[[: alpha:]]) صدى "$ REPLY" أبجدي. " ؛؛
[[: digit:]]) صدى "'$ REPLY' هو رقم." ؛؛ [[: graph:]]) صدى "'$ REPLY' هو حرف مرئي." ؛؛
[[: punct:]]) صدى "'$ REPLY' هو رمز ترقيم." ؛؛ [[: space:]]) صدى "'$ REPLY' هو حرف مسافة بيضاء." ؛؛ [[: xdigit:]]) صدى "'$ REPLY' هو رقم سداسي عشري." ؛؛
ESAC
ينتج عن تشغيل هذا البرنامج النصي ما يلي:
[me @ linuxbox ~] $ حالة4-1
اكتب حرف> a
"أ" هي حالة صغيرة.
[me @ linuxbox ~] $ حالة4-1
اكتب حرف> a
"أ" هي حالة صغيرة.
يعمل البرنامج النصي في معظم الأحيان ، لكنه يفشل إذا تطابق الحرف مع أكثر من فئة من فئات أحرف POSIX. على سبيل المثال ، يكون الحرف "a" صغيرًا وأبجديًا ، بالإضافة إلى رقم سداسي عشري. في سحق قبل الإصدار 4.0 لم تكن هناك طريقة لـ حقيبة لتتناسب مع أكثر من اختبار. الإصدارات الحديثة من سحق، أضف الترميز "؛؛ &" إلى
إنهاء كل إجراء ، لذا يمكننا الآن القيام بذلك:
#! / بن / باش
# case4-2: اختبر شخصية
read -n 1 -p "اكتب حرفًا>" صدى
حالة $ REPLY في
[[: upper:]]) صدى "'$ REPLY' هي الأحرف الكبيرة." ؛؛ &
[[: less:]]) صدى "'$ REPLY' هي الأحرف الصغيرة." ؛؛ &
[[: alpha:]]) صدى "$ REPLY" أبجدي. " ؛؛ &
[[: digit:]]) صدى "'$ REPLY' هو رقم." ؛؛ & [[: graph:]]) صدى "'$ REPLY' هو حرف مرئي." ؛؛ &
[[: punct:]]) صدى "'$ REPLY' هو رمز ترقيم." ؛؛ & [[: space:]]) صدى "'$ REPLY' هو حرف مسافة بيضاء." ؛؛ & [[: xdigit:]]) صدى "'$ REPLY' هو رقم سداسي عشري." ؛؛ &
ESAC
#! / بن / باش
# case4-2: اختبر شخصية
read -n 1 -p "اكتب حرفًا>" صدى
حالة $ REPLY في
[[: upper:]]) صدى "'$ REPLY' هي الأحرف الكبيرة." ؛؛ &
[[: less:]]) صدى "'$ REPLY' هي الأحرف الصغيرة." ؛؛ &
[[: alpha:]]) صدى "$ REPLY" أبجدي. " ؛؛ &
[[: digit:]]) صدى "'$ REPLY' هو رقم." ؛؛ & [[: graph:]]) صدى "'$ REPLY' هو حرف مرئي." ؛؛ &
[[: punct:]]) صدى "'$ REPLY' هو رمز ترقيم." ؛؛ & [[: space:]]) صدى "'$ REPLY' هو حرف مسافة بيضاء." ؛؛ & [[: xdigit:]]) صدى "'$ REPLY' هو رقم سداسي عشري." ؛؛ &
ESAC
عندما نقوم بتشغيل هذا البرنامج النصي ، نحصل على هذا:
[me @ linuxbox ~] $ حالة4-2
اكتب حرف> a "أ" هي حالة صغيرة. "أ" أبجدية.
"أ" هي شخصية مرئية. "أ" هو رقم سداسي عشري.
[me @ linuxbox ~] $ حالة4-2
اكتب حرف> a "أ" هي حالة صغيرة. "أ" أبجدية.
"أ" هي شخصية مرئية. "أ" هو رقم سداسي عشري.
تسمح إضافة صيغة "؛؛ &" للحالة بالاستمرار في الاختبار التالي بدلاً من مجرد إنهاءها.