ভেরিয়েবলটি সেট না করা থাকলে এটি পরীক্ষা করা সহজ বলে মনে হয়। আমি কমপক্ষে তিনটি উপায় সম্পর্কে জানি:
#!/bin/ksh
unset var
[ "$#" -gt 0 ] && var=$1
[ "${var+set}" != "${var}" ] && echo set1 || echo unset1
[ "${var+set}" ] && echo set2 || echo unset2
[[ -v var ]] && echo set3 || echo unset3
এটি কার্যকর:
$ ./script
unset1
unset2
unset3
এছাড়াও দিয়ে চেষ্টা ./script ''
এবং ./script 'value'
।
তবে, কেবল পরিবর্তনশীল নামটি পরিবর্তন করুন IFS
এবং তিনটি পরীক্ষা ব্যর্থ হবে:
#!/bin/ksh
unset IFS
[ "$#" -gt 0 ] && IFS=$1
[ "${IFS+set}" != "${IFS}" ] && echo set1 || echo unset1
[ "${IFS+set}" ] && echo set2 || echo unset2
[[ -v IFS ]] && echo set3 || echo unset3
IFS
Ksh93 এ সেট না থাকলে প্রকৃতপক্ষে পরীক্ষা করার কোনও উপায় আছে ?
if [[ "$IFS"a = a ]]
তবে এটি নির্বিঘ্নে বলা হবে না যেটিIFS
আনসেট করা আছে বা খালি রয়েছে।