यह जांचने का आसान तरीका है कि एक स्ट्रिंग में केवल एक अधिकृत सेट में वर्ण हैं, अनधिकृत वर्णों की उपस्थिति के लिए परीक्षण करना है। इस प्रकार, यह परीक्षण करने के बजाय कि क्या स्ट्रिंग में केवल रिक्त स्थान हैं, परीक्षण करें कि क्या स्ट्रिंग में अंतरिक्ष के अलावा कुछ वर्ण हैं। बैश में, ksh या zsh:
if [[ $param = *[!\ ]* ]]; then
echo "\$param contains characters other than space"
else
echo "\$param consists of spaces only"
fi
"रिक्त स्थान से मिलकर बनता है" में रिक्त (या परेशान) चर का मामला शामिल है।
आप किसी भी व्हाट्सएप चरित्र के लिए परीक्षण करना चाह सकते हैं। स्थान, टैब या न्यूलाइन का परीक्षण करने के [[ $param = *[^[:space:]]* ]]
लिए, लोकल सेटिंग्स का उपयोग करने के लिए या व्हाट्सएप वर्णों की स्पष्ट सूची का उपयोग करने के लिए उपयोग करें [[ $param = *[$' \t\n']* ]]
।
=
अंदर के साथ एक पैटर्न के खिलाफ एक स्ट्रिंग मिलान [[ … ]]
करना एक ksh एक्सटेंशन है (यह भी bash और zsh में मौजूद है)। किसी भी बॉर्न / पोसिक्स-शैली में, आप case
एक पैटर्न के खिलाफ एक स्ट्रिंग से मेल करने के लिए निर्माण का उपयोग कर सकते हैं । ध्यान दें कि मानक शेल पैटर्न !
एक चरित्र सेट को नकारने के लिए उपयोग करते हैं, बजाय ^
सबसे नियमित अभिव्यक्ति सिंटैक्स में।
case "$param" in
*[!\ ]*) echo "\$param contains characters other than space";;
*) echo "\$param consists of spaces only";;
esac
$'…'
व्हाट्सएप पात्रों के लिए परीक्षण करने के लिए, वाक्य-विन्यास ksh / bash / zsh के लिए विशिष्ट है; आप इन वर्णों को अपनी लिपि में शाब्दिक रूप से सम्मिलित कर सकते हैं (ध्यान दें कि एक नई पंक्ति को उद्धरण के भीतर होना चाहिए, क्योंकि बैकस्लैश + न्यूलाइन कुछ भी नहीं फैलता है), या उन्हें उत्पन्न करता है, जैसे।
whitespace=$(printf '\n\t ')
case "$param" in
*[!$whitespace]*) echo "\$param contains non-whitespace characters";;
*) echo "\$param consists of whitespace only";;
esac
man test
:-z STRING - the length of STRING is zero
। यदि आप सभी रिक्त स्थान हटाना चाहते हैं$param
, तो उपयोग करें${param// /}