ایستگاه های کاری آنلاین OnWorks Linux و Windows

لوگو

میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

توسعه های پیش بینی نشده

ممکن است خطاهایی داشته باشید که فقط به طور متناوب در یک اسکریپت رخ می دهند. گاهی اوقات اسکریپت به خوبی اجرا می شود و گاهی اوقات به دلیل نتایج یک بسط با شکست مواجه می شود. اگر نقطه ویرگول از دست رفته را برگردانیم و مقدار آن را تغییر دهیم عدد به یک متغیر خالی، ما


می تواند نشان دهد:



#! / bin / bash


# مشکل: اسکریپت برای نشان دادن خطاهای رایج


عدد=


اگر [ $number = 1 ]; سپس

echo "تعداد برابر با 1 است." دیگر

echo "عدد برابر با 1 نیست."

fi

#! / bin / bash


# مشکل: اسکریپت برای نشان دادن خطاهای رایج


عدد=


اگر [ $number = 1 ]; سپس

echo "تعداد برابر با 1 است." دیگر

echo "عدد برابر با 1 نیست."

fi


اجرای اسکریپت با این تغییر به خروجی می رسد:



[me@linuxbox ~]$ زحمت

/home/me/bin/trouble: خط 7: [: =: اپراتور یکنواخت مورد انتظار عدد برابر با 1 نیست.

[me@linuxbox ~]$ زحمت

/home/me/bin/trouble: خط 7: [: =: اپراتور یکنواخت مورد انتظار عدد برابر با 1 نیست.


ما این پیام خطای نسبتاً مرموز را دریافت می کنیم و به دنبال آن خروجی دوم می آید از دست فرمان مشکل گسترش است عدد متغیر در داخل آزمون فرمان. وقتی دستور:



[ $number = 1 ]

[ $number = 1 ]


تحت گسترش با عدد خالی بودن، نتیجه این است:


[= 1]

[= 1]


که نامعتبر است و خطا ایجاد می شود. در = عملگر یک عملگر باینری است (به یک مقدار در هر طرف نیاز دارد)، اما مقدار اول گم شده است، بنابراین آزمون دستور انتظار یک عملگر یکنواخت را دارد (مانند -z) بجای. به علاوه، از آنجایی که آزمون ناموفق (به دلیل خطا)، if دستور یک کد خروج غیر صفر دریافت می کند و بر اساس آن عمل می کند و دوم از دست فرمان اجرا می شود.

این مشکل را می توان با اضافه کردن نقل قول ها در اطراف اولین آرگومان اصلاح کرد آزمون

فرمان:


[ "$number" = 1 ]

[ "$number" = 1 ]


سپس هنگامی که گسترش رخ می دهد، نتیجه این خواهد بود:



["" = 1]

["" = 1]


که تعداد صحیح آرگومان را به دست می دهد. علاوه بر رشته های خالی، نقل قول ها باید در مواردی استفاده شوند که یک مقدار می تواند به رشته های چند کلمه ای گسترش یابد، مانند نام فایل های حاوی فاصله های جاسازی شده.


برترین سیستم عامل Cloud Computing در OnWorks: