সমস্ত পসিক্স শেল পোর্টেবল:
if [ -n "${foobar+1}" ]; then
echo "foobar is defined"
else
echo "foobar is not defined"
fi
তা নিশ্চিত করুন ${foobar:+1}
আপনি চিকিত্সার জন্য চান foobar
এটা খালি বা না সংজ্ঞায়িত কিনা একই ভাবে। এছাড়াও আপনি ব্যবহার করতে পারেন ${foobar-}
একটি খালি স্ট্রিং যখন পেতে foobar
undefined করা হয় এবং এর মান foobar
(অথবা পরে অন্য কোন ডিফল্ট মান করা অন্যথায় -
)।
কেএসএসে, যদি foobar
ঘোষণা করা হয় তবে সংজ্ঞায়িত না হয়, যেমনটি হয় typeset -a foobar
, তবে ${foobar+1}
খালি স্ট্রিংয়ে প্রসারিত হয়।
জেডএসের ভেরিয়েবলগুলি নেই যা ঘোষণা করা হলেও সেট করা নেই: typeset -a foobar
একটি খালি অ্যারে তৈরি করে।
ব্যাশে, অ্যারেগুলি অন্যরকম এবং আশ্চর্যরকম আচরণ করে। খালি শূন্য অ্যারে হলে ${a+1}
কেবল প্রসারিত হয় eg1
a
typeset -a a; echo ${a+1} # prints nothing
e=(); echo ${e+1} # prints nothing!
f=(''); echo ${f+1} # prints 1
একই নীতিটি অ্যা্যাসোসিয়েটিভ অ্যারেগুলিতে প্রযোজ্য: অ্যারে ভেরিয়েবলগুলি যদি সূচকগুলির খালি খালি সেট থাকে তবে সংজ্ঞায়িত হিসাবে বিবেচনা করা হবে।
কোনও ধরণের ভেরিয়েবল সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষার একটি পৃথক, বাশ-নির্দিষ্ট উপায় এটিতে তালিকাভুক্ত হয়েছে কিনা তা পরীক্ষা করা । এটি বিপরীত হিসাবে সংজ্ঞায়িত হিসাবে খালি অ্যারেগুলি প্রতিবেদন করে তবে রিপোর্ট-কিন্তু-অ-সিইন্ডেড ভেরিয়েবলগুলি ( ) অপরিবর্তিত হিসাবে ঘোষণা করেছে ।${!PREFIX*}
${foobar+1}
unset foobar; typeset -a foobar
case " ${!foobar*} " in
*" foobar "*) echo "foobar is defined";;
*) echo "foobar is not defined";;
esac
এটি ঘোষিত-তবে-অ-স্বাক্ষরিত ভেরিয়েবলগুলিতে ব্যর্থ ব্যতীত, বা এর রিটার্ন মান পরীক্ষারtypeset -p foobar
declare -p foobar
সমতুল্য typeset -p foobar
।
ব্যাশের মধ্যে, ksh এর মতো, অপরিবর্তিত set -o nounset; typeset -a foobar; echo $foobar
ভেরিয়েবলটি প্রসারণের প্রয়াসে ত্রুটি ঘটায় foobar
। Ksh এর বিপরীতে set -o nounset; foobar=(); echo $foobar
(বা echo "${foobar[@]}"
) ত্রুটিও ট্রিগার করে।
মনে রাখবেন যে এখানে বর্ণিত সমস্ত পরিস্থিতিতে ${foobar+1}
খালি স্ট্রিংয়ে প্রসারিত হয় কেবল যদি তবেই $foobar
ত্রুটির কারণ হয় set -o nounset
।
-v
কোনও বিকল্প নয়test
, শর্তাধীন অভিব্যক্তিগুলির জন্য একটি অপারেটর।