බෑෂ් වල විචල්යයක් (සහ ඕනෑම POSIX- අනුකූල කවචයක්) ප්රාන්ත තුනෙන් එකක් විය හැකිය:
- සකසා නැත
- හිස් නූලට සකසන්න
- හිස් නොවන නූලකට සකසන්න
බොහෝ විට ඔබ දැනගත යුත්තේ විචල්යයක් හිස් නොවන නූලකට සකසා ඇත්ද යන්න පමණි, නමුත් ඉඳහිට සැකසීම් අතර වෙනස හඳුනාගෙන හිස් නූලට සැකසීම වැදගත් වේ.
පහත දැක්වෙන්නේ ඔබට විවිධ හැකියාවන් පරීක්ෂා කළ හැකි ආකාරය පිළිබඳ උදාහරණ වන අතර, එය බාෂ් හෝ ඕනෑම පොසික්ස් අනුකූල කවචයකින් ක්රියා කරයි:
if [ -z "${VAR}" ]; then
echo "VAR is unset or set to the empty string"
fi
if [ -z "${VAR+set}" ]; then
echo "VAR is unset"
fi
if [ -z "${VAR-unset}" ]; then
echo "VAR is set to the empty string"
fi
if [ -n "${VAR}" ]; then
echo "VAR is set to a non-empty string"
fi
if [ -n "${VAR+set}" ]; then
echo "VAR is set, possibly to the empty string"
fi
if [ -n "${VAR-unset}" ]; then
echo "VAR is either unset or set to a non-empty string"
fi
මෙන්න එකම දෙය නමුත් පහසු වගු ආකාරයෙන්:
+-------+-------+-----------+
VAR is: | unset | empty | non-empty |
+-----------------------+-------+-------+-----------+
| [ -z "${VAR}" ] | true | true | false |
| [ -z "${VAR+set}" ] | true | false | false |
| [ -z "${VAR-unset}" ] | false | true | false |
| [ -n "${VAR}" ] | false | false | true |
| [ -n "${VAR+set}" ] | false | true | true |
| [ -n "${VAR-unset}" ] | true | false | true |
+-----------------------+-------+-------+-----------+
මෙම ${VAR+foo}
ඉදිකිරීමක් හිස් string පුළුල් නම් VAR
ශූන්යය හෝ වේ foo
නම්, VAR
(හිස් string ඇතුළුව) කිසිවක් කිරීමට පියවර ගෙන තිබේ.
මෙම ${VAR-foo}
ඉදිකිරීමක් වටිනාකම පුළුල් VAR
(හිස් string කිරීමට මාලාවක් ඇතුළුව) කට්ටලයක් නම් foo
ශූන්යය නම්. පරිශීලක අභිබවා යා හැකි පෙරනිමි ලබා දීම සඳහා මෙය ප්රයෝජනවත් වේ (උදා: විචල්යය යම් දෙයකට සකසා නොමැති නම් ${COLOR-red}
භාවිතා කිරීමට පවසයි ).red
COLOR
[ x"${VAR}" = x ]
විචල්යයක් සැකසී තිබේද නැතිනම් හිස් නූලට සකසා තිබේද යන්න පරීක්ෂා කිරීම සඳහා බොහෝ විට නිර්දේශ කිරීමට හේතුව වන්නේ [
විධානයෙහි සමහර ක්රියාත්මක test
කිරීම් දෝෂ සහිත වීමයි. VAR
වැනි දෙයකට සකසා ඇත්නම් -n
, සමහර ක්රියාවට නැංවීමේදී වැරදි දේ කරනු ඇත, [ "${VAR}" = "" ]
මන්ද පළමු තර්කය [
වැරදියට අර්ථකථනය කරන්නේ -n
ක්රියාකරු ලෙස මිස නූලක් ලෙස නොවේ.