از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده موثر از متغیرها در Bash
سرفصلهای مطلب
فهرست مطالب:
- معرفی
- یک متغیر اعلام کنید
- یک متغیر را با استفاده از دستور “Echo” چاپ کنید
- با استفاده از دستور “Printf” یک متغیر را چاپ کنید
- Local و متغیر جهانیس
- متغیر استدلال یک تابع Bash
- صادر کردن متغیر
- متغیرهای خط فرمان
- استفاده از متغیر $PATH
- استفاده از متغیر $RANDOM
معرفی
هیچ نوع داده ای برای اعلان متغیرها در Bash اجباری نیست زیرا Bash یک زبان برنامه نویسی با تایپ ضعیف است. با این حال، دستور “declare” را می توان برای اعلام یک متغیر با ذکر آن نوع داده از متغیر استفاده کرد. متغیر Bash بدون هیچ نماد “$” مانند سایر زبان های اسکریپت اعلام می شود اما از نماد “$” در مقابل نام متغیر استفاده می شود print مقدار متغیر هنگام تخصیص مقدار به متغیر، Bash هیچ فاصله ای را قبل و بعد از عملگر انتساب(=) پشتیبانی نمی کند.
1. متغیرهای ویژه
Bash دارای چند متغیر خاص است که برای اهداف خاص استفاده می شود. برخی از متغیرهای ویژه ای که بیشتر در اسکریپت Bash استفاده می شوند در زیر توضیح داده شده اند:
متغیر | هدف |
$$ | عادت دارد print جاری process شناسه. |
$0 | عادت دارد print نام اسکریپت در حال اجرا |
1 تا 5 دلار | عادت دارد print پنج مقدار آرگومان اول |
$@ | برای خواندن تمام آرگومان هایی که در زمان اجرای اسکریپت ارسال می شوند استفاده می شود. |
$# | برای شمارش تعداد کل آرگومان ها استفاده می شود. |
دلار؟ | این شامل وضعیت خروج جریان است process. |
2. متغیرهای محیطی
متغیرهای محیطی مانند متغیر سراسری کار می کنند و این متغیرها از هر پوسته قابل دسترسی هستند. دستور “env” لیستی از همه متغیرهای محیطی Bash را چاپ می کند. اهداف استفاده از برخی متغیرهای مفید محیطی به شرح زیر ذکر شده است:
متغیر | هدف |
$LANG | این شامل اطلاعات مجموعه کاراکتر فعلی است. |
$PATH | حاوی مقدار مسیر ذخیره شده است. |
USER $ | این شامل نام کاربری است که اسکریپت را اجرا می کند. |
$LOGNAME | این شامل نام کاربری فعلی ورود به سیستم است. |
$HOME | این شامل محل فهرست اصلی است. |
تصادفی $ | برای تولید یک عدد تصادفی استفاده می شود. |
یک متغیر اعلام کنید
اسکریپت زیر روش های مختلفی را برای اعلان متغیرها در اسکریپت Bash نشان می دهد. دستور “declare” با گزینه “-i” در اسکریپت برای اعلام یک متغیر از نوع داده عدد صحیح استفاده می شود. اگر مقدار رشته ای به این متغیر اختصاص داده شود، 0 به متغیر اختصاص داده می شود. اولین متغیر با نام “$Str” حاوی یک رشته است. متغیر دوم با نام “$n1” حاوی یک عدد است. متغیر سوم با نام $n2 نیز حاوی عددی است که با دستور “declare” اعلام می شود. دستور “read” در اسکریپت برای تخصیص یک مقدار ورودی که از کاربر به متغیر چهارم به نام “$val” گرفته می شود استفاده می شود.
خ=“لینوکس”
#تخصیص یک مقدار عددی بدون دستور ‘declare’
n1=550
#با دستور “اعلان” یک مقدار عددی اختصاص دهید
اعلام -من n2=340
#تخصیص مقدار پس از محاسبه
((نتیجه=n1+n2))
#مقدار گرفته شده از کاربر را به یک متغیر اختصاص دهید
خواندن -پ “یک رشته را وارد کنید:” val
#متغیری را به متغیر دیگری اختصاص دهید
n2=$val
اسکریپت با مقدار ورودی عددی 89 که عددی است اجرا می شود. بنابراین، متغیر “$n2” حاوی مقدار 89 است.
اسکریپت با مقدار ورودی رشته “test” که یک رشته است اجرا می شود. بنابراین، متغیر “$n2” حاوی مقدار 0 است زیرا “$n2” با نوع داده عدد صحیح اعلام شده است.
یک متغیر را با استفاده از دستور “Echo” چاپ کنید
“Echo” یکی از دستوراتی است که می توان از آن استفاده کرد print خروجی در terminal. در اسکریپت زیر، مقدار دوره به عنوان ورودی از کاربر گرفته می شود و مقدار ورودی با یک رشته دیگر با استفاده از ” چاپ می شود.echo” فرمان استفاده از دو گیومه (“) با ” ضروری استecho” فرمان به print مقدار متغیر در غیر این صورت، نام متغیر چاپ می شود.
#مقدار گرفته شده از کاربر را اختصاص دهید
خواندن -پ “نام دوره را وارد کنید:” دوره
#مقدار متغیر را با استفاده از ` چاپ کنیدecho`
echo “نام دوره است دوره $“
خروجی زیر پس از اجرای اسکریپت با مقدار “CSE-407” ظاهر می شود:
با استفاده از دستور “Printf” یک متغیر را چاپ کنید
“Printf” یکی دیگر از دستورات Bash است print خروجی فرمت شده در terminal. در اسکریپت زیر دو مقدار رشته به متغیرها اختصاص داده شده است. سپس از دستور printf استفاده می شود print مقادیر متغیرهای با مشخص کننده “%s”. دو مشخص کننده “%s” در اسکریپت استفاده می شود print مقادیر دو متغیر
# دو مقدار رشته را اختصاص دهید
دوره_کد=“CSE406”
دوره_معلم=“الکس”
#متغیرها را با استفاده از “printf” چاپ کنید
printf دوره %s توسط %s گذرانده شده است\n“ $course_code $course_teacher
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. مقادیر متغیرها با سایر مقادیر رشته ای چاپ می شوند روی موقعیت مشخص کننده “%s”:
Local و متغیرهای جهانی
متغیرهایی که در خارج از عملکرد اعلام شده اند متغیرهای “جهانی” نامیده می شوند و متغیرهایی که در داخل عملکرد اعلام می شوند متغیرهای “محلی” نامیده می شوند. کلمه کلیدی “محلی” برای تعریف متغیرهای محلی استفاده می شود. استفاده از متغیرهای سراسری و محلی در اسکریپت زیر نشان داده شده است. در اسکریپت، 87 در متغیر سراسری “$num” و 25 در متغیر محلی “$num” اختصاص داده شده است.
#تخصیص یک متغیر سراسری
تعداد=87
تابع تابع {
#متغیر سراسری را چاپ کنید
echo “مقدار متغیر جهانی است تعداد $“
#متغیر محلی با همین نام تعریف کنید
محلی تعداد=25
#متغیر محلی را چاپ کنید
echo “مقدار متغیر محلی است تعداد $“
}
# تابع را فراخوانی کنید
تابع
#متغیر سراسری را دوباره چاپ کنید
echo «مقدار متغیر سراسری پس از فراخوانی تابع است تعداد $“
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. با توجه به خروجی ، متغیر جهانی پس از اجرای عملکرد بدون تغییر باقی می ماند و مقدار متغیر جهانی 87 قبل و بعد از فراخوانی عملکرد است.
متغیر استدلال تابع Bash
روش ارسال مقادیر آرگومان به توابع Bash مانند سایر زبان های برنامه نویسی نیست. هنگام فراخوانی تابع، مقادیر آرگومان تابع با فاصله ارسال می شود. متغیرهای “$1″، “$2″، .. و “$n” در داخل تابع برای خواندن مقادیر آرگومان استفاده میشوند. روش استفاده از سه آرگومان تابع در اسکریپت زیر نشان داده شده است. در اسکریپت زیر ، سه مقادیر رشته ای به عملکردی به نام book_names () منتقل می شود که توسط متغیرهای “1 دلار” ، “2 دلار” و “3 دلار” خوانده می شود. این مقادیر آرگومان با قالب بندی توسط دستور printf چاپ می شوند.
نام_کتاب()
{
#مقادیر آرگومان را بخوانید
کتاب 1=1 دلار
کتاب 2=2 دلار
کتاب 3=3 دلار
echo “نام کتاب ها عبارتند از:”
#مقادیر آرگومان را چاپ کنید
printf “1. %s\n2. %s\n3. %s\n“ “$book1“ “$book2“ “$book3“
}
# تابع را با 3 آرگومان فراخوانی کنید
نام_کتاب “مرجع جیبی Bash” “آموزش پوسته Bash” “کتاب آشپزی بش”
خروجی زیر پس از اجرای اسکریپت ظاهر می شود. شماره سریال و خط جدید به خروجی اضافه می شود:
صادر کردن متغیر
گاهی اوقات، به اشتراک گذاری مقدار متغیر در چندین پوسته نیاز دارد. “exportدستور ” برای انجام این کار استفاده می شود. روش استفاده از “exportدستور ” در این قسمت از آموزش نشان داده شده است.
دستورات زیر را اجرا کنید تا بررسی کنید که چگونه متغیر پس از اجرای دستور ریست می شود.bash” فرمان در اینجا، یک مقدار رشته روی متغیر «$OS» تنظیم شده و بعداً در آن چاپ میشود terminal. سپس، زمانی که متغیر “$OS” پس از اجرای “bashدستور ” هیچ چیزی چاپ نمی شود زیرا تمام متغیرهای پوسته پس از اجرای ” ریست می شوندbash” فرمان
$ echo سیستم عامل $
$ bash
$ echo سیستم عامل $
خروجی زیر نشان می دهد که مقدار متغیر “$OS” پس از اجرای ” خالی است.bash” دستور:
اگر می خواهید مقدار متغیر پوسته خاص را در پوسته دیگری به اشتراک بگذارید، باید از ” استفاده کنید.exportدستور ” قبل از اجرای ”bash” فرمان دستورات زیر را اجرا کنید export مقدار متغیر “$OS” و print مقدار پس از اجرای “bash” فرمان در اینجا، متغیر “$OS” قبل از چاپ متغیر و اجرای “” صادر می شود.bash” فرمان سپس، متغیر “$OS” دوباره چاپ می شود.
$ export سیستم عامل
$ echo سیستم عامل $
$ bash
$ echo سیستم عامل $
خروجی زیر نشان می دهد که مقدار متغیر “$OS” حاوی مقدار قبلی پس از اجرای “bash” دستور:
متغیر صادراتی در اسکریپت زیر برای بررسی اینکه آیا متغیر دارای مقدار قبلی است یا خیر استفاده می شود:
#متغیر صادر شده را چاپ کنید
echo “سیستم عامل است سیستم عامل $“
خروجی زیر نشان میدهد که متغیر «$OS» صادر شده حاوی مقدار قبلی است CentOS:
متغیرهای خط فرمان
این command-line آرگومان ها برای ارسال مقادیر به اسکریپت در زمان اجرای اسکریپت استفاده می شوند. استفاده از متغیرهای “$#”، “$0” و “$1” در اسکریپت زیر نشان داده شده است. تعداد کل command-line آرگومان ها توسط متغیر “$#” شمارش می شوند و در متغیر “$total” ذخیره می شوند. اگر مقدار “$ کل” بیش از 0 باشد ، نام پرونده اسکریپت با استفاده از متغیر “0 $” چاپ می شود و اولین مقدار آرگومان با استفاده از متغیر “1 $” چاپ می شود. اگر هیچ آرگومانی در زمان اجرای اسکریپت ارسال نشود، یک پیغام خطا چاپ می شود.
#تعداد کل آرگومان ها را بشمارید
جمع=$#
اگر [ $total -ne 0 ]
سپس
#تعداد کل آرگومان ها را چاپ کنید
echo “کل آرگومان های خط فرمان هستند $ مجموع“
#نام اسکریپت را چاپ کنید
echo “نام اسکریپت $0 است”
#آگومان اول را چاپ کنید
echo “مقدار آرگومان اول $1 است”
دیگر
#چاپ پیام
echo “هیچ مقدار آرگومان داده نشده است.”
فی
خروجی زیر پس از ارسال یک مقدار آرگومان در زمان اجرای اسکریپت ظاهر می شود:
خروجی زیر پس از اجرای اسکریپت بدون هیچ آرگومانی ظاهر می شود:
استفاده از متغیر $PATH
“$PATH” یکی از متغیرهای محیطی مهم Bash است. مکان فایل های اجرایی مختلف و فایل های اسکریپت در این متغیر ذخیره می شود. هنگامی که کاربر سعی می کند به هر فایل اجرایی یا فایل اسکریپت دسترسی پیدا کند، پوسته مکان آن فایل را در متغیر “$PATH” بررسی می کند. مقدار این متغیر بر اساس آن قابل تغییر است روی نیازمندی ها.
برای بررسی خروجی فعلی متغیر “$PATH” دستور زیر را اجرا کنید:
فرض کنید می خواهید مکان “/home/fahmida/tempdir” را در متغیر “$PATH” اضافه کنید. دستورات زیر را برای اضافه کردن مکان جدید در “$PATH” و مقدار فعلی متغیر “$PATH” دوباره اجرا کنید:
$ echo $PATH
خروجی زیر پس از اجرای دستورات ظاهر می شود. مکان جدید در انتهای متغیر “$PATH” اضافه می شود:
استفاده از متغیر $RANDOM
Bash هیچ تابع تصادفی برای تولید اعداد تصادفی مانند سایر زبان های برنامه نویسی ندارد. برای تولید اعداد در Bash می توان از متغیر ویژه ای که “$RANDOM” است استفاده کرد. اسکریپت زیر با پنج بار تکرار حلقه “for” پنج عدد تصادفی تولید می کند. طول هر عدد تصادفی ممکن است در هر تکرار حلقه متفاوت باشد.
echo “تولید 5 عدد تصادفی:”
حلقه را 5 بار تکرار کنید
برای من که در {1..5}
انجام دادن
#چاپ اعداد تصادفی
echo تصادفی $
انجام شده
خروجی مشابه زیر پس از اجرای اسکریپت ظاهر می شود. با توجه به خروجی، سه عدد 5 رقمی و دو عدد 3 رقمی تولید می شود. اگر اسکریپت را دوباره اجرا کنید، خروجی تغییر خواهد کرد:
نتیجه
روش های استفاده موثر از انواع مختلف متغیرهای Bash در این آموزش با استفاده از دستورات و اسکریپت های متعدد Bash توضیح داده شده است. کاربران Bash پس از مطالعه این آموزش، اطلاعات واضحی در مورد استفاده از متغیرهای مختلف Bash دریافت خواهند کرد.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1403-01-06 07:56:03