স্ট্রিংয়ে কেবল অনুমোদিত সেটে অক্ষর রয়েছে তা যাচাই করার সহজ উপায়টি অননুমোদিত অক্ষরের উপস্থিতির জন্য পরীক্ষা করা। সুতরাং, স্ট্রিংটিতে কেবল ফাঁকা স্থান রয়েছে কিনা তা পরীক্ষার পরিবর্তে, স্ট্রিংটিতে স্থান ব্যতীত অন্য কিছু অক্ষর রয়েছে কিনা তা পরীক্ষা করুন। বাশ, কেশ বা জেডশায়:
if [[ $param = *[!\ ]* ]]; then
echo "\$param contains characters other than space"
else
echo "\$param consists of spaces only"
fi
"কেবলমাত্র স্থানগুলির সমন্বয়ে" খালি (বা আনসেট) ভেরিয়েবলের কেস অন্তর্ভুক্ত।
আপনি যে কোনও সাদা স্থানের অক্ষরের জন্য পরীক্ষা করতে চাইতে পারেন। [[ $param = *[^[:space:]]* ]]
স্থানীয় সেটিংস ব্যবহার করার জন্য, বা শ্বেতস্পেস অক্ষরগুলির যে কোনও স্পষ্ট তালিকা আপনি পরীক্ষা করতে চান, যেমন [[ $param = *[$' \t\n']* ]]
স্থান, ট্যাব বা নিউলাইন পরীক্ষা করার জন্য ব্যবহার করুন।
=
অভ্যন্তরের সাথে কোনও প্যাটার্নের সাথে স্ট্রিংয়ের মিল করা [[ … ]]
হ'ল কেএস এক্সটেনশন (বাশ এবং জেডএসে উপস্থিত)। যে কোনও বোর্ন / পসিক্স-স্টাইলে, আপনি case
কোনও নকশার বিপরীতে স্ট্রিংয়ের সাথে মিলের জন্য কনস্ট্রাক্টটি ব্যবহার করতে পারেন । নোট করুন যে স্ট্যান্ডার্ড শেল প্যাটার্নগুলি বেশিরভাগ নিয়মিত এক্সপ্রেশন সিনট্যাক্সে পছন্দ না করে !
একটি অক্ষর সেটকে উপেক্ষা করতে ব্যবহার করে ^
।
case "$param" in
*[!\ ]*) echo "\$param contains characters other than space";;
*) echo "\$param consists of spaces only";;
esac
সাদা স্থানের অক্ষরের জন্য পরীক্ষা করতে $'…'
সিনট্যাক্সটি ksh / bash / zsh এর সাথে নির্দিষ্ট; আপনি আপনার স্ক্রিপ্টে এই অক্ষরগুলি অক্ষরে অক্ষরে sertোকাতে পারেন (দ্রষ্টব্য যে একটি নিউলাইন উদ্ধৃতিতে থাকতে হবে, যেমন ব্যাকস্ল্যাশ + নিউলাইন কিছুতেই প্রসারিত হয় না), বা এগুলি উত্পন্ন করতে পারে, যেমন
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// /}