دستور until در لینوکس
در این بخش به بررسی دستور until در لینوکس می پردازیم، سیستمعامل لینوکس یکی از محبوبترین و قدرتمندترین سیستمعاملهای موجود است که بهخاطر قابلیتهای پیشرفته خود، در دنیای سرورها، برنامهنویسی و توسعهی نرمافزارها بسیار پرکاربرد است. یکی از مهمترین ابزارهای این سیستمعامل، دستورات خط فرمان است که به کاربران این امکان را میدهد تا با استفاده از آنها، تعامل بیشتری با سیستم داشته باشند و وظایف مختلف را بهصورت خودکار و سادهتری انجام دهند. در این میان، دستورهای شرطی مانند if، while و until نقش ویژهای دارند.
دستور until یکی از دستورات شرطی در لینوکس است که عملکرد آن برعکس دستور while میباشد. این دستور به کاربر اجازه میدهد تا حلقهای از دستورات را تا زمانی که یک شرط برقرار نشود، اجرا کند. به عبارتی دیگر، دستورات داخل حلقه تا زمانی که شرط false باشد، تکرار میشوند و با درست شدن شرط، اجرای حلقه متوقف میشود. در این مقاله، به بررسی دقیق دستور until، نحوه عملکرد آن و مثالهایی کاربردی از استفاده آن در اسکریپتهای شل (Shell Scripts) خواهیم پرداخت.
دستور until در لینوکس چیست؟
دستور until در لینوکس یک حلقه شرطی است که تا زمانی که شرط مشخص شده به حالت true تبدیل نشده باشد، دستورات درون حلقه را اجرا میکند. در این حلقه، ابتدا شرط بررسی میشود و اگر شرط برقرار نبود (یعنی false بود)، دستورات اجرا میشوند. بعد از اجرای دستورات، دوباره شرط بررسی میشود و این فرآیند تکرار میشود تا زمانی که شرط true شود و اجرای حلقه متوقف گردد.
نحوه استفاده از until به شکل زیر است:
until [ شرط ]; do
دستورات
doneدر این ساختار، until یک شرط دریافت میکند و تا زمانی که این شرط false باشد، دستورات داخل بلوک do...done اجرا میشوند. در لحظهای که شرط true شود، حلقه خاتمه مییابد.
مثال ۱: حلقه until ساده
بیایید یک مثال ساده از یک حلقه until بزنیم که اعداد از ۱ تا ۵ را چاپ میکند.
#!/bin/bash
num=1
until [ $num -gt 5 ]; do
echo $num
num=$((num + 1))
doneدر این مثال:
- ابتدا متغیر
numبا مقدار ۱ مقداردهی اولیه میشود. - حلقه
untilتا زمانی که مقدارnumبیشتر از ۵ نباشد، اجرا میشود. به عبارتی شرط حلقه این است کهnumکمتر یا مساوی ۵ باشد. - در هر بار اجرای حلقه، مقدار
numچاپ میشود و سپس یک واحد به آن اضافه میشود.
توضیح مثال ۱
در این مثال، حلقه until تا زمانی که شرط [ $num -gt 5 ] به true تبدیل نشود، اعداد را یکی یکی چاپ میکند. هنگامی که num به مقدار ۶ میرسد، شرط درست میشود و حلقه متوقف میشود. در واقع، این نوع ساختار به کاربر این امکان را میدهد که تا زمان محقق نشدن یک شرط خاص، دستورات دلخواهی را بهصورت مکرر اجرا کند.
تفاوت until و while
درک تفاوت بین دو دستور while و until برای بهبود تسلط بر استفاده از این دو بسیار مهم است. دستور while تا زمانی که شرط مشخصی true باشد، حلقه را اجرا میکند، در حالی که دستور until تا زمانی که شرط false باشد، دستورات را تکرار میکند.
به عبارتی دیگر:
- در حلقه
while، شرط در صورتی که برقرار باشد، دستورات اجرا میشوند. - در حلقه
until، شرط در صورتی که برقرار نباشد، دستورات اجرا میشوند.
مثال ۲: مقایسه حلقههای while و until
کاربردهای عملی دستور until
حلقه until میتواند در سناریوهای مختلفی که نیاز به تکرار دستورات تا زمانی که شرط خاصی برقرار نشده است، مفید باشد. برخی از این سناریوها شامل مانیتورینگ وضعیت سیستم، چک کردن اتصال به اینترنت یا بررسی مقادیر ورودی کاربران هستند.
مثال ۳: چک کردن وجود یک فایل
یکی از کاربردهای رایج دستور until، چک کردن وجود یک فایل در سیستم است. فرض کنید میخواهیم یک اسکریپت بنویسیم که تا زمانی که یک فایل خاص در دایرکتوری وجود نداشته باشد، منتظر بماند و سپس پیامی چاپ کند.
#!/bin/bash
until [ -f /path/to/file.txt ]; do
echo "Waiting for file..."
sleep 5
done
echo "File exists!"توضیح مثال ۳
در این اسکریپت:
- تا زمانی که فایل
/path/to/file.txtوجود نداشته باشد، حلقهuntilهر ۵ ثانیه یک بار پیام “Waiting for file…” را چاپ میکند. - به محض اینکه فایل موجود شود، حلقه متوقف میشود و پیام “File exists!” چاپ میگردد.
مزایا و محدودیتهای استفاده از until
استفاده از حلقههای شرطی مانند until در اسکریپتهای شل مزایای زیادی دارد، اما همچنان محدودیتهایی نیز وجود دارد که باید در نظر گرفته شود.
مزایا:
- سادگی و خوانایی: استفاده از حلقه
untilکد را خواناتر و سادهتر میکند، بهخصوص زمانی که نیاز داریم تا زمانی که شرط برقرار نشده، عملیات تکرار شود. - صرفهجویی در زمان: با استفاده از حلقههای شرطی مانند
untilمیتوانیم از تکرار دستی دستورات جلوگیری کنیم و وظایف را به صورت خودکار انجام دهیم. - انعطافپذیری: این دستور امکان استفاده در شرایط متنوع را فراهم میکند؛ از چک کردن وضعیت سیستم تا مانیتور کردن منابع یا انتظار برای رخ دادن یک رویداد خاص.
محدودیتها:
- پیچیدگی در شرایط پیچیده: در برخی موارد که شرطها بسیار پیچیده میشوند، استفاده از
untilممکن است نیاز به تفکر دقیقتری داشته باشد تا از تکرار بیپایان جلوگیری شود. - کارایی: اگر حلقه بهطور نادرست نوشته شود، ممکن است به منابع سیستم آسیب بزند، مانند زمانی که حلقه بدون توقف و بدون وقفه اجرا شود.
- محدودیت در کنترل دقیق: برخلاف برخی دیگر از زبانهای برنامهنویسی پیشرفته، کنترل دقیقتر بر حلقهها ممکن است نیاز به استفاده از دستورات اضافی مانند
breakوcontinueداشته باشد.
دستور until یکی از ابزارهای قدرتمند در لینوکس برای کنترل تکرار دستورات است. این دستور به شما امکان میدهد تا دستورات را تا زمانی که شرط مشخصی برقرار نشده است، اجرا کنید. این قابلیت در موارد متعددی مانند بررسی شرایط سیستم، انتظار برای رویدادهای خاص و خودکارسازی وظایف مختلف کاربرد دارد.
با اینکه استفاده از این دستور مزایای زیادی دارد، اما باید به محدودیتهای آن نیز توجه کرد و از حلقههای شرطی با دقت استفاده نمود تا از مشکلاتی مانند تکرار بیپایان یا استفاده بیش از حد منابع سیستم جلوگیری شود.
آیا این مطلب برای شما مفید بود ؟





