11. متغیرها - قسمت سوم
همانطور که در بخش متغیرها - قسمت اول اشاره کردیم، استفاده از ابروها در اطراف متغیرها مانع گمراهی میشود:
foo=sun echo $fooshine # $fooshine is undefined echo ${foo}shine # displays the word "sunshine"تمامش این نیست، به هرحال - این ابروها یک مورد استفاده بسیار قویتر دیگر دارند. ما میتوانیم با انواع متغیرهای تعریف نشده یا تهی سر و کار داشته باشیم( در پوسته تفاوتی میان تعریف نشده و تهی موجود نیست ).
کاربرد مقادیر پیشفرض
کد کوچک پایین را ملاحظه کنید، که به کاربر برای دریافت ورودی اعلام آمادگی میکند، امامقادیر پیشفرض را قبول میکند:#!/bin/sh echo -en "What is your name [ `whoami` ] " read myname if [ -z "$myname" ]; then myname=`whoami` fi echo "Your name is : $myname"گزینههای "-en" دستور echo به او میگویند، انقطاع سطر ایجاد نکند. در برخی سیستمها به جای آن از "\c" در انتهای سطر فرمان استفاده میشود.
این اسکریپت چنین اجرا میشود:
steve$ ./name.sh What is your name [ steve ] Your name is : steve ... or, with user input: steve$ ./name.sh What is your name [ steve ] foo Your name is : fooاین با استفاده از یک ویژگی متغیر پوسته میتواند بهتر انجام شود. به وسیله استفاده از ابروها و کاربرد ویژه ":-" ، میتوانید یک مقدار پیشفرض مشخص کنید، که درصورت عدم مقداردهی توسط کاربر، از آن استفاده شود:
echo -en "What is your name [ `whoami` ] " read myname echo "Your name is : ${myname:-`whoami`}"این میتواند یک حالت خاص در نظر گرفته شود - ما از خروجی دستور whoami که برابر نام کاربری شما (UID) است، استفاده کردیم. مثال متعارفتر استفاده از یک متن ثابت میباشد، مانند این:
echo "Your name is : ${myname:-John Doe}"استفاده دیگر backtick ها،
`whoami`
اجرای یک زیرپوسته است، به طوری که هر دستور cd
یا تنظیم هر متغیر دیگر، در پوسته جاری در حال اجرا، اثر نمیگدارد.
استفاده و تنظیم مقادیر پیشفرض
ترکیب دیگری به صورت ":=" وجود دارد که اگر متغیر تعریف نشده باشد، مقدار پیشفرض را به آن نسبت میدهد:echo "Your name is : ${myname:=John Doe}"این تکنیک به آن معنی است که هردستیابی بعدی به متغیر
$myname
همیشه به یک کمیت منتهی میشود، یا مقدار وارده توسط کاربر، یا کلمه "John Doe" .
Steve Parker نوشته Bourne و Bash راهنمای آموزشی اسکریپت نویسی
ترجمه محمود پهلوانی
لطفاً برای بهتر دیدن صفحه از فایرفاکس استفاده کنید