एकाधिक क्रियाएँ करना
के संस्करणों में खूब जोर से पीटना 4.0 से पहले, मामला एक सफल मैच पर केवल एक ही कार्रवाई करने की अनुमति दी गई। एक सफल मैच के बाद, कमांड समाप्त हो जाएगी। यहां हम एक स्क्रिप्ट देखते हैं जो एक चरित्र का परीक्षण करती है:
#! / Bin / bash
# केस4-1: एक चरित्र का परीक्षण करें
पढ़ें -n 1 -p "एक अक्षर टाइप करें > "प्रतिध्वनि
केस $रिप्लाई में
[[:अपर:]]) इको "'$रिप्लाई' अपर केस है।" ;;
[[:लोअर:]]) इको "'$रिप्लाई' लोअर केस है।" ;;
[[:अल्फ़ा:]]) इको "'$रिप्लाई' वर्णानुक्रम में है।" ;;
[[:अंक:]]) इको "'$रिप्लाई' एक अंक है।" ;; [[:ग्राफ़:]]) इको "'$रिप्लाई' एक दृश्यमान वर्ण है।" ;;
[[:पंकट:]]) इको "'$रिप्लाई' एक विराम चिह्न है।" ;; [[:स्पेस:]]) इको "'$रिप्लाई' एक व्हाइटस्पेस कैरेक्टर है।" ;; [[:xdigit:]]) इको "'$रिप्लाई' एक हेक्साडेसिमल अंक है।" ;;
esac
#! / Bin / bash
# केस4-1: एक चरित्र का परीक्षण करें
पढ़ें -n 1 -p "एक अक्षर टाइप करें > "प्रतिध्वनि
केस $रिप्लाई में
[[:अपर:]]) इको "'$रिप्लाई' अपर केस है।" ;;
[[:लोअर:]]) इको "'$रिप्लाई' लोअर केस है।" ;;
[[:अल्फ़ा:]]) इको "'$रिप्लाई' वर्णानुक्रम में है।" ;;
[[:अंक:]]) इको "'$रिप्लाई' एक अंक है।" ;; [[:ग्राफ़:]]) इको "'$रिप्लाई' एक दृश्यमान वर्ण है।" ;;
[[:पंकट:]]) इको "'$रिप्लाई' एक विराम चिह्न है।" ;; [[:स्पेस:]]) इको "'$रिप्लाई' एक व्हाइटस्पेस कैरेक्टर है।" ;; [[:xdigit:]]) इको "'$रिप्लाई' एक हेक्साडेसिमल अंक है।" ;;
esac
इस स्क्रिप्ट को चलाने से यह उत्पन्न होता है:
[मुझे@लिनक्सबॉक्स ~]$ केस4-1
एक अक्षर टाइप करें > a
'ए' लोअरकेस है।
[मुझे@लिनक्सबॉक्स ~]$ केस4-1
एक अक्षर टाइप करें > a
'ए' लोअरकेस है।
स्क्रिप्ट अधिकांश भाग के लिए काम करती है, लेकिन यदि कोई वर्ण POSIX वर्ण वर्गों में से एक से अधिक से मेल खाता है तो विफल हो जाता है। उदाहरण के लिए, वर्ण "ए" लोअरकेस और वर्णमाला दोनों है, साथ ही एक हेक्साडेसिमल अंक भी है। में खूब जोर से पीटना संस्करण 4.0 से पहले इसके लिए कोई रास्ता नहीं था मामला एक से अधिक परीक्षणों का मिलान करना। के आधुनिक संस्करण खूब जोर से पीटना, इसमें ";;&" नोटेशन जोड़ें
प्रत्येक क्रिया को समाप्त करें, इसलिए अब हम यह कर सकते हैं:
#! / Bin / bash
# केस4-2: एक चरित्र का परीक्षण करें
पढ़ें -n 1 -p "एक अक्षर टाइप करें > "प्रतिध्वनि
केस $रिप्लाई में
[[:अपर:]]) इको "'$रिप्लाई' अपर केस है।" ;;&
[[:लोअर:]]) इको "'$रिप्लाई' लोअर केस है।" ;;&
[[:अल्फ़ा:]]) इको "'$रिप्लाई' वर्णानुक्रम में है।" ;;&
[[:डिजिट:]]) इको "'$रिप्लाई' एक अंक है।" ;;& [[:ग्राफ़:]]) इको "'$रिप्लाई' एक दृश्य वर्ण है।" ;;&
[[:पंकट:]]) इको "'$रिप्लाई' एक विराम चिह्न है।" ;;& [[:स्पेस:]]) इको "'$रिप्लाई' एक व्हाइटस्पेस कैरेक्टर है।" ;;& [[:xdigit:]]) इको "'$रिप्लाई' एक हेक्साडेसिमल अंक है।" ;;&
esac
#! / Bin / bash
# केस4-2: एक चरित्र का परीक्षण करें
पढ़ें -n 1 -p "एक अक्षर टाइप करें > "प्रतिध्वनि
केस $रिप्लाई में
[[:अपर:]]) इको "'$रिप्लाई' अपर केस है।" ;;&
[[:लोअर:]]) इको "'$रिप्लाई' लोअर केस है।" ;;&
[[:अल्फ़ा:]]) इको "'$रिप्लाई' वर्णानुक्रम में है।" ;;&
[[:डिजिट:]]) इको "'$रिप्लाई' एक अंक है।" ;;& [[:ग्राफ़:]]) इको "'$रिप्लाई' एक दृश्य वर्ण है।" ;;&
[[:पंकट:]]) इको "'$रिप्लाई' एक विराम चिह्न है।" ;;& [[:स्पेस:]]) इको "'$रिप्लाई' एक व्हाइटस्पेस कैरेक्टर है।" ;;& [[:xdigit:]]) इको "'$रिप्लाई' एक हेक्साडेसिमल अंक है।" ;;&
esac
जब हम इस स्क्रिप्ट को चलाते हैं, तो हमें यह मिलता है:
[मुझे@लिनक्सबॉक्स ~]$ केस4-2
एक अक्षर टाइप करें > a 'ए' लोअरकेस है। 'ए' वर्णानुक्रमिक है.
'ए' एक दृश्य वर्ण है. 'ए' एक हेक्साडेसिमल अंक है.
[मुझे@लिनक्सबॉक्स ~]$ केस4-2
एक अक्षर टाइप करें > a 'ए' लोअरकेस है। 'ए' वर्णानुक्रमिक है.
'ए' एक दृश्य वर्ण है. 'ए' एक हेक्साडेसिमल अंक है.
";;&" सिंटैक्स को जोड़ने से केस को केवल समाप्त होने के बजाय अगले परीक्षण पर जारी रखने की अनुमति मिलती है।