از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید
سرفصلهای مطلب
استدین: 1
بیایید با درک از طریق تمرین در مورد Stdin Stream با استفاده از حلقههای while شروع کنیم. در ابتدا، ما یک مثال اساسی از stdin به عنوان خوانده شده خواهیم داشت. دستور زیر را اجرا کنید. این دستورالعمل ورودی صفحه کلید را می طلبد. در این، از طریق stdin، ابزار خواندن متن را دریافت می کند.
مثال 01:
یک فایل جدید به نام “input.sh” ایجاد کنید و اسکریپت ضمیمه شده را به آن اضافه کنید. ما از حلقه while برای خواندن متن توسط کاربر از این استفاده کردهایم terminal و print آی تی. اسکریپت با یک “/dev/stdin” به عنوان اولین پارامتر $1 نامگذاری شده است، که در آن رویکرد مربوطه، ورودی منظم را از console. این فایل را ذخیره کرده و ببندید.
باز کن terminal، و فایل جدید به روز شده “input.sh” را به صورت زیر اجرا کنید:
وقتی فایل را با استفاده از bash دستور، برای نوشتن چیزی به خط بعدی می روید. همانطور که در زیر مشاهده می کنید، کاربر یک متن یک خطی نوشته و Enter را فشار دهید.
متن نوشته شده توسط کاربر ابتدا خوانده می شود و چاپ می شود روی خط بعدی مانند زیر
شما حتی می توانید یک فاصله بین ورودی متن خود مانند زیر ایجاد کنید.
مثال 02:
حال متن فایل را می خوانیم. همان فایل “input.sh” را با ارائه نام فایل “script.sh” به عنوان اولین پارامتر $1 به روز کنید. رویکرد مربوطه از این سند خوانده می شود.
ما اطلاعات متنی زیر را در فایل “script.sh” به صورت زیر داریم. بیایید بررسی کنیم که چگونه کار می کند.
فایل “input.sh” را با استفاده از bash فرمان خواهید دید که جریان خوانده شده از فایل ارائه شده “script.sh” خوانده می شود و print آن را در terminal مانند زیر.
مثال 03:
بیایید یک مثال برای خواندن هر دایرکتوری یک به یک با استفاده از stdin داشته باشیم. شما باید پارامتر -u را با خواندن در نظر بگیرید. در این، “-u 1” به معنای “خواندن از stdin” است. در این کد، “line” نشان دهنده نام فایل است و از افزایش “i++” برای پرش به فهرست یا فایل بعدی استفاده می شود. همچنین شماره فایل خوانده شده را نیز می شمارد. بیایید این کد را اجرا کنیم تا بررسی کنیم که چه اتفاقی می افتد.
را اجرا کنید bash فایل “input.sh”. از شما می خواهد متنی را وارد کنید تا به فایل بعدی بروید. در اینجا “comm” نام اولین فایل را نشان می دهد.
در حالی که این کار را ادامه می دهید، می بینید که ما لیستی از فایل هایی را داریم که مرور کرده ایم.
مثال 04:
در این مثال، دو فایل مرتبط برای خواندن داریم. با استفاده از دستور “Chmod” مانند زیر، امتیازات مورد نیاز را به هر دو فایل اختصاص دهید.
کد زیر را در فایل “input.sh” بنویسید. تا زمانی که حلقه “while” خطوطی را دریافت کند، خواهد شد print آن خطوط در حالی که “خط” به فایل دیگری “script.sh” اشاره دارد.
کد زیر را در فایل “script.sh” داریم. در حالی که حلقه در حال اجرا است، شماره خط را چاپ می کند.
هر دو فایل را با استفاده از “”./” در ابتدای نام فایل اجرا کنید و با استفاده از “”|” جدا کنید. در پوسته مشاهده خواهید کرد که هنگام چاپ متن از فایل ها نیز شماره خطوط را چاپ می کند. این یک روش بسیار ساده برای ارتباط بین دو فایل یا محتوای آنها است.
مثال 05:
اجازه دهید این موضوع را با داشتن این مثال ساده و کارآمد به پایان برسانیم. ما یک فایل “script.sh” با محتویات زیر یا نام افراد داریم. ما این اسامی را یکی یکی از یک فایل دیگر خواهیم خواند.
فایل “input.sh:” را با اسکریپت زیر به روز کنید. در این اسکریپت، ما یک حلقه while برای توضیح دقیق کار “stdin” داریم. ما از خواندن «read –r» در حین خواندن از یک فایل دیگر به غیر از ورودی استاندارد استفاده کردهایم. از سوی دیگر، استفاده از “-u” به عنوان bash-specific، خروجی استاندارد از کاربر در terminal. در اینجا، “نام” متن یا محتوای فایل “script.sh” است. از گزینه “-p” برای “خواندن” استفاده می شود. عبارت read “نام” را از یک فایل دیگر می خواند و از شما می پرسد که آیا می خواهید آن را حذف کنید یا نه. کلمه کلیدی “ip” برای پاسخ کاربر برای تایید عمل حذف استفاده می شود. پاسخ کاربر هر چه باشد، خواهد بود print آن را بیرون در عبارت «if»، بررسی میکند که آیا ورودی استاندارد کاربر با «y» یکسان است یا خیر print برخی از پیام ها را به عنوان ذکر این موضوع که “نام” را حذف کرده است. این process تا آخرین محتوای فایل “script.sh” تکرار خواهد شد.
بیایید نگاهی به خروجی کد بالا بیاندازیم. فایل را با استفاده از bash فرمان سیستم از شما می پرسد که آیا می خواهید این “نام” را حذف کنید یا خیر. “y” را وارد کرده و روی “Enter” ضربه بزنید.
اینجا روی با فشار دادن “y”، این کار انجام می شود print “y” و پیامی نشان می دهد که “نام” خاص را حذف کرده است. پس از آن، به “نام” دیگری تغییر می کند.
از شما می خواهد که نام ها را حذف کنید تا زمانی که تمام نام ها یا محتویات فایل “script.sh” به صورت زیر لوپ شود.
نتیجه:
ما با استفاده از حلقه “while” در bash اسکریپت
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 04:11:03