وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش استفاده از $() و ${} در اسکریپت شل

0 0
زمان لازم برای مطالعه: 4 دقیقه


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

در این آموزش دو مورد از مفیدترین آنها را توضیح خواهیم داد bash بسط های مورد استفاده در اسکریپت های پوسته:

  • $() – جایگزینی دستور
  • ${} – جایگزینی پارامتر/بسط متغیر

یک بسط در Shell انجام می شود روی اسکریپت بعد از اینکه به توکن تقسیم شد. توکن دنباله ای از کاراکترها است که توسط پوسته یک واحد در نظر گرفته می شود. این می تواند یک کلمه یا یک عملگر باشد.

ما تمام نمونه ها و اسکریپت های ذکر شده در این مقاله را اجرا کرده ایم روی یک سیستم Debian 10 Buster. با این حال، شما به راحتی می توانید آنها را تکرار کنید روی اکثر پوسته های لینوکس ما از خط فرمان پیش فرض دبیان، ترمینال، برای این آموزش استفاده می کنیم. در دبیان، می توانید از طریق نوار جستجوی Application Launcher به صورت زیر به آن دسترسی داشته باشید:

روش استفاده از $() و ${} در اسکریپت شل

برای دسترسی به راه‌انداز برنامه، کافی است کلید Super/Windows را فشار دهید روی صفحه کلید شما

$() تعویض دستور

به گفته این مقام مسئول GNU راهنمای مرجع Bash:

«تعویض فرمان اجازه می دهد تا خروجی یک فرمان جایگزین خود فرمان شود. Bash با اجرای دستور و جایگزینی دستور جایگزین با خروجی استاندارد دستور، با حذف خطوط جدید، توسعه را انجام می دهد. خطوط جدید جاسازی شده حذف نمی شوند، اما ممکن است در حین تقسیم کلمه حذف شوند.” تعویض دستور زمانی اتفاق می افتد که یک دستور به صورت زیر محصور شود:

$(فرمان)

یا
`فرمان`

برای مثال موارد زیر echo دستورات خروجی فرمان date را به عنوان ورودی خود جایگزین می کنند:

$ echo $(تاریخ)

پیشنهاد می‌کنیم بخوانید:  چگونه پیکربندی tmux را سفارشی کنیم؟

$ echoتاریخ

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

همچنین می توانید از جایگزینی دستور برای اختصاص مقدار به یک متغیر استفاده کنید. به عنوان مثال، ما خواهیم کرد print تاریخ امروز از طریق متغیر TODAY به شرح زیر است:

$ امروز=$(تاریخ)

$ echo امروز $

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

یکی دیگر از کاربردهای جایگزینی دستور در حلقه های پوسته برای دریافت ورودی است. در اینجا، ما سعی خواهیم کرد print تمام فایل‌های txt در پوشه اصلی ما با استفاده از جایگزینی دستور:

برای f که در /خانه/sana/*txt
انجام دادن

echo $f
انجام شده

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

استفاده از جایگزینی دستور در اسکریپت شل

مثال های بالا چند راه هستند که در آنها می توانید از قدرت جایگزینی دستور در اسکریپت پوسته خود استفاده کنید. در اینجا یک نمونه گزارش وضعیت است که می توانیم print با استفاده از اسکریپت پوسته زیر:

#!/bin/sh

echo ***گزارش وضعیت***

امروز=$(تاریخ)
echo “امروز است امروز $

کاربران=$(سازمان بهداشت جهانی | دستشویی)
echo $USERS کاربران در حال حاضر وارد شده اند”

UPTIME=$(تاریخ ; زمان کار)
echo “زمان کار است $UPTIME

جایگزینی دستور سه بار در این اسکریپت استفاده شده است. در چاپ تاریخ، کاربران وارد شده و آپتایم. ما اسکریپت را به صورت زیر ذخیره کردیم:

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

آن را اجرایی کرده و سپس از طریق دستور زیر اجرا کنید:

$ chmod +x status.sh
دلار/statys.sh

در اینجا خروجی اسکریپت status.sh ما است:

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

البته می‌توانید با دنبال کردن مثال‌هایی که ذکر کردیم، اسکریپت‌های معنادارتری ایجاد کنید.

${} جایگزینی/بسط پارامتر

یک پارامتر، در Bash، موجودی است که برای ذخیره مقادیر استفاده می شود. یک پارامتر را می توان با یک عدد، یک نام یا یک نماد خاص ارجاع داد. هنگامی که یک پارامتر با یک عدد ارجاع داده می شود، a نامیده می شود پارامتر موقعیتی. هنگامی که یک پارامتر با یک نام ارجاع داده می شود، a نامیده می شود متغیر. هنگامی که یک پارامتر با یک نماد خاص ارجاع می شود، به این معنی است که آنها پارامترهای تنظیم خودکار با کاربردهای خاص هستند.

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

پیشنهاد می‌کنیم بخوانید:  عملیات پیشرفته فایل Bash

ساده ترین نحو ممکن گسترش پارامتر به شرح زیر است:

در اینجا روش استفاده از بسط پارامتر در Bash آمده است:

${پارامتر}

به عنوان مثال، ساده ترین استفاده، جایگزینی پارامتر با مقدار آن است:

$ نام=“جان دو”

$ echo${name}

این دستور جایگزین مقدار متغیر “name” می شود تا توسط آن استفاده شود echo دستور:

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

ممکن است فکر کنید که با اجتناب از بریس‌های فرفری به شرح زیر می‌توانید همین کار را به دست آورید:

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

پاسخ این است که در طول بسط پارامتر، این بریس‌های فرفری به تعیین حدود نام متغیر کمک می‌کنند. اجازه دهید توضیح دهیم که منظور ما از محدود کردن در اینجا چیست. اجازه دهید دستور زیر را اجرا کنم روی سیستم من:

$ echo «اسم شخص است $name_

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

نتیجه نشد print مقدار نام متغیر همانطور که سیستم فکر می کرد به متغیر “name_” اشاره می کنم. بنابراین، نام متغیر من “محدود” نبود. پرانتزهای فرفری در مثال زیر نام متغیر را محدود کرده و نتایج را به صورت زیر برمی گرداند:

$ echo «اسم شخص است ${name}_”

روش استفاده از $() و ${} در اسکریپت شلروش استفاده از $() و ${} در اسکریپت شل

در اینجا همه روش هایی که در آن متغیرها در Shell جایگزین می شوند آورده شده است:

${متغیر} این دستور جایگزین مقدار متغیر می شود.
${variable:-word} اگر متغیر صفر باشد یا تنظیم نشده باشد، کلمه جایگزین متغیر می شود. مقدار متغیر تغییر نمی کند.
${variable:=word} اگر متغیری null باشد یا اگر تنظیم نشده باشد، مقدار متغیر بر روی word تنظیم می شود.
${variable:?message} اگر متغیر صفر باشد یا تنظیم نشده باشد، پیام به صورت استاندارد چاپ می شود bash خطا
${variable:+word} اگر متغیر تنظیم شده است، کلمه جایگزین متغیر می شود. با این حال، مقدار خود متغیر تغییر نمی کند.

مثال‌های بالا چند راه هستند که در آنها می‌توانید از قدرت جایگزینی متغیر در Bash استفاده کنید. شما می توانید این راه ها را برای استفاده از بسط در اسکریپت های پوسته خود بگنجانید تا به طور مطلوب به وظیفه خود دست یابید.

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

زمان انتشار: 1402-12-31 12:32:02

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید