برگههای مرجع زیر یک خلاصه مفید از برخی مفاهیم اسکریپتنویسی ارایه میکنند. آنچه قبلا در متن گفته شده، این موضوعات را به طور کاملتر، همراه با ارایه مثالهای کاربردی مورد بحث قرار میدهد.
جدول B-1. متغیرهای خاص پوسته
متغیر | بیانگر |
---|---|
$0 | نام فایل اسکریپت |
$1 | پارامتر مکانی شماره 1 |
$2 - $9 | پارامترهای مکانی شماره 2 تا 9 |
${10} | پارامتر مکانی شماره 10 |
$# | تعداد پارامترهای مکانی |
"$*" | تمام پارامترهای مکانی (به صورت یک کلمه واحد) * |
"$@" | تمام پارامترهای مکانی (به صورت رشته های جداگانه) |
${#*} | تعداد پارامترهای مکانی |
${#@} | تعداد پارامترهای مکانی |
$? | مقدار برگشتی |
$$ | ID پردازش (PID) اسکریپت |
$- | نشانوندهای داده شده به اسکریپت (با استفاده ازset) |
$_ | آخرین شناسه فرمان قبلی |
$! | ID پردازش (PID) آخرین job اجرا شده در پسزمینه |
* باید نقلقولی بشود، وگرنه به صورت $@ پیشفرض میشود.
جدول B-2. عملگرهای test: مقایسه دو دویی
عملگر | معنی | ----- | عملگر | معنی |
---|---|---|---|---|
مقایسه حسابی | مقایسه رشتهای | |||
-eq | مساوی با | = | مساوی با | |
== | مساوی با | |||
-ne | غیر مساوی با | != | غیر مساوی با | |
-lt | کوچکتر از | \< | کوچکتر از (ASCII) * | |
-le | کوچکتر یا مساوی | |||
-gt | بزرگتر از | \> | بزرگتر از (ASCII) * | |
-ge | بزرگتر یا مساوی | |||
-z | رشته تهی است | |||
-n | رشته تهی نیست | |||
مقایسه حسابی | درون پرانتزهای دوتایی (( ... )) | |||
> | بزرگتر از | |||
>= | بزرگتر یا مساوی | |||
< | کوچکتر از | |||
<= | کوچکتر یا مساوی |
* اگر داخل ساختار تست براکتهای دوتایی [[ ... ]] باشد، آنوقت escape (\) لازم نیست.
جدول B-3. عملگرهای test: فایلها
عملگر | بررسی میکند که آیا | ----- | عملگر | بررسی میکند که آیا |
---|---|---|---|---|
-e | فایل وجود دارد | -s | اندازه فایل صفر نیست | |
-f | فایل یک فایل معمولی است | |||
-d | فایل یک دایرکتوری است | -r | فایل دارای مجوز خواندن است | |
-h | فایل یک پیوند نمادین است | -w | فایل مجوز نوشتن دارد | |
-L | فایل یک پیوند نمادین است | -x | فایل دارای مجوز اجرا هست | |
-b | فایل یک دستگاه بلوکی است | |||
-c | فایل یک دستگاه کاراکتری است | -g | نشانوند sgid برقرار است | |
-p | فایل یک لوله است | -u | نشانوند suid برقرار است | |
-S | فایل یک socket است | -k | «بیت sticky» تنظیم است | |
-t | فایل بهم پیوسته با یک ترمینال است | |||
-N | فایل بعد از آخرین خوانده شدن ویرایش شده | F1 -nt F2 | فایل F1 جدیدتر از F2 است * | |
-O | شما مالک فایل هستید | F1 -ot F2 | فایل F1 قدیمیتر از F2 است * | |
-G | id گروه فایل و شما یکسان است | F1 -ef F2 | فایل F1 و F2 هر دو hard linkهای یک فایل هستند * | |
! | NOT (وارونه کردن مفهوم تستهای فوق) |
* عملگر باینری (به دو عملوند احتیاج دارد).
جدول B-4. جایگزینی پارامتر و بسط
عبارت | معنی |
---|---|
${var} | مقدار var (مانند $var) |
${var-$DEFAULT} | اگر var برقرار نباشد، عبارت مساوی $DEFAULT ارزیابی گردد * |
${var:-$DEFAULT} | اگر var برقرار نباشد یا تهی باشد، عبارت برابر با $DEFAULT ارزیابی بشود* |
${var=$DEFAULT} | اگر var برقرار نباشد، عبارت به صورت $DEFAULT ارزیابی گردد * |
${var:=$DEFAULT} | اگر var برقرار نیست یا تهی است، عبارت به صورت $DEFAULT ارزیابی شود* |
${var+$OTHER} | اگر var برقرار است، عبارت برابر $OTHER ارزیابی شود، وگرنه به عنوان رشته تهی |
${var:+$OTHER} | اگر var برقرار است، عبارت معادل $OTHER ارزیابی گردد وگرنه مانند یک رشته تهی |
${var?$ERR_MSG} | اگر var برقرار نیست، $ERR_MSG چاپ شده و اسکریپت با یک وضعیت خروج 1 لغو گردد.* |
${var:?$ERR_MSG} | اگر var برقرار نیست، $ERR_MSG چاپ شده و اسکریپت با یک وضعیت خروج 1 لغو گردد.* |
${!varprefix*} | با تمام متغیرهای تعریف شده قبلی که با varprefix شروع میشوند منطبق میشود |
${!varprefix@} | باتمام متغیرهای قبلی تعریف شده که با varprefix شروع میگردند منطبق میشود |
* اگر var برقرار است، عبارت به صورت $var ارزیابی گردد، بدون هیچ آثار جانبی.
# توجه کنید که برخی رفتارهای بالا در عملگرها از نگارشهای قدیمیتر Bash تغییر کردهاند.
جدول B-5. عملیات رشتهای
عبارت | معنی |
---|---|
${#string} | طول $string |
${string:position} | استخراج رشته فرعی از $string از محل $position |
${string:position:length} | استخراج رشته فرعی به طول $length از $string از محل $position [شماره گذاری از صفر است، محل اولین کاراکتر 0 است] |
${string#substring} | پاک کردن کوتاهترین انطباق $substring از سمت جلوی $string |
${string##substring} | پاک کردن بلندترین مورد انطباق $substring از سمت جلوی $string |
${string%substring} | پاک کردن کوتاهترین مورد انطباق $substring از سمت عقب $string |
${string%%substring} | پاک کردن بلندترین مورد انطباق $substring از سمت عقب $string |
${string/substring/replacement} | تعویض اولین مورد انطباق $substring با $replacement |
${string//substring/replacement} | تعویض همه موارد انطباق $substring با $replacement |
${string/#substring/replacement} | اگر $substring با ابتدای $string مطابقت کند، جایگزینی $replacement به جای $substring |
${string/%substring/replacement} | اگر $substring با انتهای $string مطابقت کند، جایگزینی $replacement به جای $substring |
expr match "$string" "$substring" | طول انطباق $substring* در ابتدای $string |
expr "$string" : "$substring" | طول انطباق $substring* در ابتدای $string |
expr index "$string" "$substring" | اولین موقعیت عددی در $string که کاراکتری از $substring* در آنجا منطبق میشود، [0 در صورتیکه انطباقی نباشد، شمارش موقعیت از 1 شروع میشود] |
expr substr $string $position $length | استخراج تعداد $length کاراکتر از $string با شروع از محل $position [0 اگر منطبق نشود، 1 موقعیت اولین کاراکتر است ] |
expr match "$string" '\($substring\)' | استخراج $substring*، از ابتدای $string |
expr "$string" : '\($substring\)' | استخراج $substring*، از ابتدای $string |
expr match "$string" '.*\($substring\)' | استخراج $substring*، از انتهای $string |
expr "$string" : '.*\($substring\)' | استخراج $substring*، از انتهای $string |
* که در آنجا $substring یک عبارت منظم است.
جدول B-6. ساختارهای متفرقه
عبارت | توضیح |
---|---|
براکتها | |
if [ CONDITION ] | ساختار تست |
if [[ CONDITION ]] | ساختار تست توسعه یافته |
Array[1]=element1 | مقدار دهی آرایه |
[a-z] | محدوده کاراکترهای داخل یک عبارت منظم |
براکتهای کمانی (ابروها) | |
${variable} | جایگزینی پارامتر |
${!variable} | ارجاع غیر مستقیم متغیر |
{ command1; command2; . . . commandN; } | بلوک کد |
{string1,string2,string3,...} | بسط ابرو |
{a..z} | بسط ابروی توسعه یافته |
{} | تعویض متن، بعد از find و xargs |
پرانتزها | |
( command1; command2 ) | گروه فرمان اجرا شونده در یک پوسته فرعی |
Array=(element1 element2 element3) | مقدار دهی آرایه |
result=$(COMMAND) | جایگزینی فرمان، سبک جدید |
>(COMMAND) | جایگزینی پردازش |
<(COMMAND) | جایگزینی پردازش |
پرانتزهای دوگانه | |
(( var = 78 )) | حساب اعداد صحیح |
var=$(( 20 + 5 )) | حساب صحیح، با تخصیص متغیر |
(( var++ )) | افزایش متغیر سبک C |
(( var-- )) | کاهش متغیر سبک C |
(( var0 = var1<98?9:21 )) | عملگر سهگانه سبک C |
نقلقول کردن | |
"$variable" | نقلقول کردن "ضعیف" |
'string' | نقلقول کردن 'قوی' |
نقلقولهای برعکس | |
result=`COMMAND` | جایگزینی فرمان، سبک قدیم |