تمامی اسکریپتهای Shell پس از پایان اجرا، Value (مقداری) را اصطلاحاً return (بازگرداندن) میکنند؛ در پاسخ به این سؤال که مقادر بازگشتی (Return Values) به چه دردی میخورند بایستی گفت که اگر شرایطی داشته باشیم که در آن یک رابطهٔ Parent-Child (پدر و فرزندی) وجود داشته باشد، میتوان فهمید که یک اسکریپت چه زمانی تکمیل شده تا بر آن اساس بتوان اسکریپت دیگری را اجرا کرد:
بهعبارت دیگر، پس از اجرای یک اسکرپیت میتوان بررسی کرد و دید که آیا شرط لازم ایجاد شده است یا خیر و بر آن اساس تصمیمی دیگری اتخاذ کرد.
به خاطر داشته باشید |
مرسوم است که پیام موفقیت با ۰ نشان داده شده و خطا هم با هر مقداری به جز ۰ نمایش داده میشود که این عدد در یک متغیر محیطی (Environment Variable) تحتعنوان ?$ ذخیره میشود. |
برای روشنتر شدن این مسأله مثالی میزنیم؛ دستور ls /etc/passwd را در ترمینال وارد میکنیم و در پاسخ etc/passwd/ نمایش داده میشود چراکه سیستم باموفقیت توانسته این فایل را بیابد و مقدار ۰ را بهعنوان پیام موفقیت صادر میکند که همیشه در متغیری تحتعنوان ?$ ذخیره میشود که بااستفاده از دستور echo میتوان آن را روی صفحه چاپ کرد:
$ echo $?
0
حال صرفاً جهت تست کردن این موضوع، دستور زیر را در ترمینال وارد میکنیم:
$ ls /etc/passwd2
ls: cannot access '/etc/passwd2': No such file or directory
درواقع، از آنجا که ما هیچ فایلی تحتعنوان passwd2 روی سیستم خود نداریم، میبینیم که پیامی صادر میشود که چنین فایلی یافت نشد؛ حال اگر بخواهیم ببینیم که اکنون چه مقداری در متغیر ?$ ذخیره شده است، مجدد دستور ?$ echo را در ترمینال وارد میکنیم:
$ echo $?
2
همانطورکه پیش از این گفتیم، هر زمانی که اجرای کامند باموفقیت همراه نباشد، عددی به غیر از ۰ درنظر گرفته خواهد شد که در اینجا عدد ۲ است.