انجمنهای فارسی اوبونتو
		کمک و پشتیبانی => برنامهسازی => نویسنده: 🇬🇧بریتانیای کبیر🇬🇧 در 05 امرداد 1402، 08:48 بظ
		
			
			- 
				در یک سیستم پوسته جوری تنظیم شده که اگه یک متغیر تعریف نشده خطا بده، با دستور زیر
 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 کاری میکنه که وجود نداشتن متغیر مثل خطاهای نحوی اجرای اسکریپتو متوقف کنه
 
- 
				در یک سیستم پوسته جوری تنظیم شده که اگه یک متغیر تعریف نشده خطا بده، با دستور زیر
 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 کاری میکنه که وجود نداشتن متغیر مثل خطاهای نحوی اجرای اسکریپتو متوقف کنه
 
 
 با Shell Expansions میشه:
 # $1 IS NOT EXIST
 COMMAND=$1
 if [ -z "${COMMAND:-}" ]; then
 echo COMMAND var is empty
 fi