आप एक परीक्षण में एक बयान का उपयोग कर सकते हैं , लेकिन कोड थोड़ा बालों वाला लगेगा:case
if
if case "$1" in (cat|dog|mouse) true ;; (*) false; esac; then
printf '"%s" is one of cat, dog or mouse\n' "$1"
else
printf '"%s" is unknown\n' "$1"
fi
या थोड़ा कम,
if ! case "$1" in (cat|dog|mouse) false; esac; then
printf '"%s" is one of cat, dog or mouse\n' "$1"
else
printf '"%s" is unknown\n' "$1"
fi
यह case
खंड के लिए मिलान करने के लिए सिर्फ एक खंड का उपयोग कर रहा है if
। यह एक अनावश्यक सच / गलत परीक्षण पेश करता है।
यह सिर्फ उपयोग करने के लिए बेहतर है case
:
case "$1" in
cat|dog|mouse)
printf '"%s" is one of cat, dog or mouse\n' "$1"
;;
*)
printf '"%s" is unknown\n' "$1"
esac
ऐसा न करें:
is_one_of () {
eval "case $1 in ($2) return 0; esac"
return 1
}
if is_one_of "$1" 'cat|dog|mouse'; then
printf '"%s" is one of cat, dog or mouse\n' "$1"
else
printf '"%s" is unknown\n' "$1"
fi
या यह:
is_one_of () (
word=$1
shift
IFS='|'
eval "case $word in ($*) return 0; esac"
return 1
)
if is_one_of "$1" cat dog mouse; then
printf '"%s" is one of cat, dog or mouse\n' "$1"
else
printf '"%s" is unknown\n' "$1"
fi
... क्योंकि आप सिर्फ अधिक खतरनाक क्रॉफ्ट जोड़ रहे हैं, सिर्फ if
एक पूरी तरह से उचित case
बयान के स्थान पर अपने कोड में एक बयान का उपयोग करने में सक्षम होने के लिए ।