از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Bash منتظر فشار کلید باشید
سرفصلهای مطلب
دستور “خواندن” برای گرفتن ورودی کاربر در a استفاده می شود bash اسکریپت ما می توانیم ورودی داشته باشیم bash اسکریپت با استفاده از انواع مختلف گزینه ها با دستور خواندن. گاهی اوقات لازم است اسکریپت را به گونه ای بنویسیم که اسکریپت اجرا شود تا زمانی که کلید خاصی فشار داده شود یا اسکریپت خاص بر اساس آن اجرا شود. روی کلید خاص یا برنامه برای مدت زمان مشخصی منتظر می ماند تا هر کلیدی فشار داده شود. چگونه می توانید بنویسید bash اسکریپت منتظر ماندن برای هر کلید خاص یا هر کلیدی برای برخی کارها در این آموزش با استفاده از مثال های مختلف نشان داده شده است.
مثال شماره 1:
ایجاد یک bash فایل با اسکریپت زیر هنگامی که اسکریپت را اجرا می کنید، تا زمانی که کاربر کلیدی را فشار دهد ادامه خواهد داشت. اسکریپت در هر 3 ثانیه منتظر ورودی کاربر می ماند و اگر کاربر هیچ کلیدی را فشار ندهد، این کار را انجام می دهد. print پیام، “منتظر فشار کلید“.
echo “کلیدی را برای ادامه فشار دهید”
در حالی که [ true ] ; انجام دادن
خواندن -t 3 -n 1
اگر [ $? = 0 ] ; سپس
خروج ;
دیگر
echo “در انتظار فشار دادن کلید”
فی
انجام شده
اسکریپت را اجرا کنید.
خروجی:
مثال شماره 2:
ایجاد یک bash فایل با اسکریپت زیر در این مثال از یک حلقه while بی نهایت استفاده شده است که با فشار دادن ‘q’ توسط کاربر به پایان می رسد. اگر کاربر هر کلیدی را بدون ‘q’ فشار دهد، مقدار متغیر شمارنده 1 و افزایش می یابد print ارزش.
echo “q” را برای خروج فشار دهید”
شمردن=0
در حالی که : انجام دادن
خواندن -n 1 ک <&1
اگر [[ $k = q ]] ; سپس
printf “\nخروج از برنامه\n“
زنگ تفریح
دیگر
((شمردن=$count+1))
printf “\nتکرار برای $count بار\n“
echo “q” را برای خروج فشار دهید”
فی
انجام شده
اسکریپت را اجرا کنید.
خروجی:
مثال شماره 3:
ایجاد یک bash فایل با اسکریپت زیر که انواع مختلفی از وظایف را بر اساس انجام می دهد روی کلید فشار داده شده توسط کاربر اگر کاربر ‘1’ را فشار دهد، دو آرگومان خط فرمان و print. اگر کاربر ‘2’ را فشار دهد، دو آرگومان خط فرمان را کم می کند و print. اسکریپت به طور مداوم اجرا می شود تا زمانی که کاربر “3” را فشار دهد.
v1=1 دلار
v2=2 دلار
در حالی که :
انجام دادن
echo “1. اضافه”
echo “2. تفریق”
echo “3. ترک”
echo -n “نوع 1 یا 2 یا 3:”
خواندن -n 1 -t 15 آ
printf “\n“
مورد $a که در
1* ) echo “$ v1 + $ v2 = $(($v1+$v2))”;;
2* ) echo “$ v1 – $ v2 = $(($v1-$v2))”;;
3* ) خروج 0;;
* ) echo “دوباره امتحان کن.”;;
اساک
انجام شده
اسکریپت را با دو مقدار آرگومان عددی اجرا کنید.
خروجی:
مثال شماره 4:
ایجاد یک bash فایل با اسکریپت زیر زمانی که کاربر کلید ESC را فشار دهد اسکریپت خاتمه می یابد. این اسکریپت خواهد شد print کلیدهایی که توسط کاربر فشار داده می شود تا زمانی که کلید ESC فشار داده شود.
ورودی کاربر=“”
echo “کلید ESC را برای خروج فشار دهید”
# یک کاراکتر را بخوانید
در حالی که خواندن -r -n1 کلید
انجام دادن
# if ورودی == کلید ESC
اگر [[ $key == $‘\e’ ]];
سپس
زنگ تفریح;
فی
# کلید را به متغیری که توسط کاربر فشار داده می شود اضافه کنید.
userinput+=کلید $
انجام شده
printf “\nشما تایپ کرده اید: $userinput\n“
اسکریپت را اجرا کنید.
خروجی:
مثال شماره 5:
ایجاد یک bash فایلی با کد زیر که منتظر می ماند تا کلید ENTER اسکریپت را خاتمه دهد. اسکریپت یک نام سرور را به عنوان ورودی می گیرد و سعی می کند هر 2 ثانیه سرور را پینگ کند. اگر دستور ping پاسخ را از سرور دریافت کند، اسکریپت را با نمایش خروجی خاتمه می دهد در غیر این صورت با چاپ پیام “تلاش برای اتصال با…” منتظر پاسخ کاربر یا کلید ENTER می ماند.
echo “آدرس سروری را که می خواهید پینگ کنید وارد کنید”
خواندن سرور
در حالی که ! پینگ -ج 1 -n -دبلیو 2 سرور $
انجام دادن
echo “تلاش برای ارتباط با سرور $“
echo “مطبوعات [ENTER] خاتمه دادن”
خواندن -s -ن 1 -t 1 کلید
اگر [[ $key == $‘\x0a’ ]]; # if ورودی == کلید ENTER
سپس
خروج 0
فی
انجام شده
printf “%s\n“ “سرور $ در حال اجراست”
اسکریپت را اجرا کنید.
خروجی:
نتیجه:
این آموزش نشان می دهد که چگونه می توانید بنویسید bash اسکریپت به روش های مختلف که منتظر ورودی کاربر برای انجام هر کار خاص یا خاتمه اسکریپت است. امیدواریم پس از تمرین مثال های بالا، بتوانید اسکریپت را به گونه ای بنویسید که بتوانید برای هر کلیدی منتظر بمانید و کار خاص را بر اساس انجام دهید. روی کلید فشار داده شده توسط کاربر
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 23:31:03