यह शेल (बैश, डैश) प्रॉम्प्ट पर काम करता है:
[ -z "" ] && echo A || echo B
A
हालाँकि, मैं POSIX शेल स्क्रिप्ट लिखने की कोशिश कर रहा हूँ , यह इस तरह से शुरू होती है:
#!/bin/sh
[ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1
readonly raw_input_string=${1}
[ -z "${raw_input_string}" ] && echo "The given argument is empty."; exit 1
और मुझे पता नहीं क्यों, लेकिन मुझे संदेश नहीं मिला :
दिया गया तर्क खाली है।
अगर मैं इस तरह से स्क्रिप्ट को कॉल करता हूं:
./test_empty_argument ""
ऐसा क्यों है?
if [ X”” = X”$var” ] ; then echo isempty ; fi
[ "" = "$var" ]
ठीक काम करेगा; एक उद्धृत रिक्त स्ट्रिंग तर्क सूची से नहीं निकाली जाएगी [
। लेकिन यह आवश्यक नहीं है, क्योंकि [ -z "$var" ]
यह भी ठीक काम करता है।