در یک سیستم پوسته جوری تنظیم شده که اگه یک متغیر تعریف نشده خطا بده، با دستور زیر
set -u
و در اسکریپت زیر
# $1 IS NOT EXIST
COMMAND=$1
if [ -z "$COMMAND" ]; then
echo COMMAND var is empty
fi
خب من میخوام بدونم که چرا اگه set -u فعال باشه و متغیر command تعریف نشده باشه فقط خطا زیر داده میشه و دستور زیر if اجرا نمیشه؟
bash: name: unbound variable
set -u و [ -z ] چه مشکلی با هم دارن که جلو کار همو میگیرن و خب پس چطور میشه در یک پوسته ای که set -u تنظیمه وجود نداشتن یک متغیر(خالی بودنشو) بفهمیم ؟ حتی set -u جلو کار [ ! -n ] رو هم میگیره.
فکر کنم فهمیدم چرا، set -u کاری میکنه که اگه از متغیری که وجود نداره استفاده کنیم، پوسته خطا بده و مثله اینکه اصلا اسکریپت به دستور echo نمیرسه و قبل از اون و در خط قبل اسکریپت متوقف میشه. set -u کاری میکنه که وجود نداشتن متغیر مثل خطاهای نحوی اجرای اسکریپتو متوقف کنه