از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از $() و ${} در اسکریپت شل
سرفصلهای مطلب
اگر از یک سیستم لینوکس استفاده می کنید، ممکن است از قبل بدانید که یک رابط پوسته برای تعامل با سیستم شما چقدر مهم است. در اکثر توزیع های لینوکس، Bash پوسته پیش فرضی است که برای اجرای دستورات و اجرای اسکریپت ها استفاده می کنیم. شل اسکریپت مجموعه ای از دستورات است که هنگام اجرا برای انجام برخی از عملکردهای مفید استفاده می شود. روی لینوکس. این فایل .sh که توسط یک کاربر نوشته شده است، حاوی تمام دستورات مورد استفاده برای انجام یک کار است تا مجبور نباشیم آن دستورات را به صورت دستی و یکی یکی اجرا کنیم.
در این آموزش دو مورد از مفیدترین آنها را توضیح خواهیم داد bash بسط های مورد استفاده در اسکریپت های پوسته:
- $() – جایگزینی دستور
- ${} – جایگزینی پارامتر/بسط متغیر
یک بسط در Shell انجام می شود روی اسکریپت بعد از اینکه به توکن تقسیم شد. توکن دنباله ای از کاراکترها است که توسط پوسته یک واحد در نظر گرفته می شود. این می تواند یک کلمه یا یک عملگر باشد.
ما تمام نمونه ها و اسکریپت های ذکر شده در این مقاله را اجرا کرده ایم روی یک سیستم Debian 10 Buster. با این حال، شما به راحتی می توانید آنها را تکرار کنید روی اکثر پوسته های لینوکس ما از خط فرمان پیش فرض دبیان، ترمینال، برای این آموزش استفاده می کنیم. در دبیان، می توانید از طریق نوار جستجوی Application Launcher به صورت زیر به آن دسترسی داشته باشید:
برای دسترسی به راهانداز برنامه، کافی است کلید Super/Windows را فشار دهید روی صفحه کلید شما
$() تعویض دستور
به گفته این مقام مسئول GNU راهنمای مرجع Bash:
«تعویض فرمان اجازه می دهد تا خروجی یک فرمان جایگزین خود فرمان شود. Bash با اجرای دستور و جایگزینی دستور جایگزین با خروجی استاندارد دستور، با حذف خطوط جدید، توسعه را انجام می دهد. خطوط جدید جاسازی شده حذف نمی شوند، اما ممکن است در حین تقسیم کلمه حذف شوند.” تعویض دستور زمانی اتفاق می افتد که یک دستور به صورت زیر محصور شود:
یا
`فرمان`
برای مثال موارد زیر echo دستورات خروجی فرمان date را به عنوان ورودی خود جایگزین می کنند:
همچنین می توانید از جایگزینی دستور برای اختصاص مقدار به یک متغیر استفاده کنید. به عنوان مثال، ما خواهیم کرد print تاریخ امروز از طریق متغیر TODAY به شرح زیر است:
$ echo “امروز $“
یکی دیگر از کاربردهای جایگزینی دستور در حلقه های پوسته برای دریافت ورودی است. در اینجا، ما سعی خواهیم کرد print تمام فایلهای txt در پوشه اصلی ما با استفاده از جایگزینی دستور:
انجام دادن
echo “$f“
انجام شده
استفاده از جایگزینی دستور در اسکریپت شل
مثال های بالا چند راه هستند که در آنها می توانید از قدرت جایگزینی دستور در اسکریپت پوسته خود استفاده کنید. در اینجا یک نمونه گزارش وضعیت است که می توانیم print با استفاده از اسکریپت پوسته زیر:
echo ***گزارش وضعیت***
امروز=$(تاریخ)
echo “امروز است امروز $“
کاربران=$(سازمان بهداشت جهانی | دستشویی -ل)
echo “$USERS کاربران در حال حاضر وارد شده اند”
UPTIME=$(تاریخ ; زمان کار)
echo “زمان کار است $UPTIME“
جایگزینی دستور سه بار در این اسکریپت استفاده شده است. در چاپ تاریخ، کاربران وارد شده و آپتایم. ما اسکریپت را به صورت زیر ذخیره کردیم:
آن را اجرایی کرده و سپس از طریق دستور زیر اجرا کنید:
دلار/statys.sh
در اینجا خروجی اسکریپت status.sh ما است:
البته میتوانید با دنبال کردن مثالهایی که ذکر کردیم، اسکریپتهای معنادارتری ایجاد کنید.
${} جایگزینی/بسط پارامتر
یک پارامتر، در Bash، موجودی است که برای ذخیره مقادیر استفاده می شود. یک پارامتر را می توان با یک عدد، یک نام یا یک نماد خاص ارجاع داد. هنگامی که یک پارامتر با یک عدد ارجاع داده می شود، a نامیده می شود پارامتر موقعیتی. هنگامی که یک پارامتر با یک نام ارجاع داده می شود، a نامیده می شود متغیر. هنگامی که یک پارامتر با یک نماد خاص ارجاع می شود، به این معنی است که آنها پارامترهای تنظیم خودکار با کاربردهای خاص هستند.
بسط/جایگزینی پارامتر هست process واکشی مقدار از موجودیت/پارامتر ارجاع شده. مثل این است که یک متغیر را برای دریافت مقدار آن گسترش می دهید.
ساده ترین نحو ممکن گسترش پارامتر به شرح زیر است:
در اینجا روش استفاده از بسط پارامتر در Bash آمده است:
به عنوان مثال، ساده ترین استفاده، جایگزینی پارامتر با مقدار آن است:
$ echo “${name}”
این دستور جایگزین مقدار متغیر “name” می شود تا توسط آن استفاده شود echo دستور:
ممکن است فکر کنید که با اجتناب از بریسهای فرفری به شرح زیر میتوانید همین کار را به دست آورید:
پاسخ این است که در طول بسط پارامتر، این بریسهای فرفری به تعیین حدود نام متغیر کمک میکنند. اجازه دهید توضیح دهیم که منظور ما از محدود کردن در اینجا چیست. اجازه دهید دستور زیر را اجرا کنم روی سیستم من:
نتیجه نشد print مقدار نام متغیر همانطور که سیستم فکر می کرد به متغیر “name_” اشاره می کنم. بنابراین، نام متغیر من “محدود” نبود. پرانتزهای فرفری در مثال زیر نام متغیر را محدود کرده و نتایج را به صورت زیر برمی گرداند:
در اینجا همه روش هایی که در آن متغیرها در Shell جایگزین می شوند آورده شده است:
${متغیر} | این دستور جایگزین مقدار متغیر می شود. |
${variable:-word} | اگر متغیر صفر باشد یا تنظیم نشده باشد، کلمه جایگزین متغیر می شود. مقدار متغیر تغییر نمی کند. |
${variable:=word} | اگر متغیری null باشد یا اگر تنظیم نشده باشد، مقدار متغیر بر روی word تنظیم می شود. |
${variable:?message} | اگر متغیر صفر باشد یا تنظیم نشده باشد، پیام به صورت استاندارد چاپ می شود bash خطا |
${variable:+word} | اگر متغیر تنظیم شده است، کلمه جایگزین متغیر می شود. با این حال، مقدار خود متغیر تغییر نمی کند. |
مثالهای بالا چند راه هستند که در آنها میتوانید از قدرت جایگزینی متغیر در Bash استفاده کنید. شما می توانید این راه ها را برای استفاده از بسط در اسکریپت های پوسته خود بگنجانید تا به طور مطلوب به وظیفه خود دست یابید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 12:32:02