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

سرور مجازی NVMe

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

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


مفهوم “جریان” در رایانه برای چیزی که ممکن است داده ها را جابجا کند، اعمال می شود. هر دستوری را که در آن اجرا می کنید terminal در هر موقعیتی از جریان خواهد بود. این موقعیت ها می توانند مبدأ یا خروجی باشند. بیایید یک نمای کلی از جریان خاص Stdin داشته باشیم. در لینوکس، stdin به ورودی پیش فرض یا استاندارد اشاره دارد. ورودی مورد نیاز باید یک متن باشد. برای به دست آوردن داده یا اطلاعات از شما، این کنترل کننده فایل است که رویه شما را می خواند. تقریباً تمام جریان ها در لینوکس به گونه ای مشاهده می شوند که گویی دایرکتوری هستند. ما ممکن است اطلاعات همه این جریان‌ها را بخوانیم/بنویسیم، دقیقاً همانطور که شما می‌توانید یک سند را بخوانید/بنویسید. با استفاده از یک شماره توصیفگر فایل خاص مربوط به آن، یک رویکرد عالی برای دسترسی به یک سند فراهم می کند. در طول وضعیت چنین جریان هایی به هر یک از اینها ارزش های ویژه ای اختصاص داده شده است. Stdin دارای مقدار 1 است.

استدین: 1

بیایید با درک از طریق تمرین در مورد Stdin Stream با استفاده از حلقه‌های while شروع کنیم. در ابتدا، ما یک مثال اساسی از stdin به عنوان خوانده شده خواهیم داشت. دستور زیر را اجرا کنید. این دستورالعمل ورودی صفحه کلید را می طلبد. در این، از طریق stdin، ابزار خواندن متن را دریافت می کند.

$ خواندن

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

مثال 01:

یک فایل جدید به نام “input.sh” ایجاد کنید و اسکریپت ضمیمه شده را به آن اضافه کنید. ما از حلقه while برای خواندن متن توسط کاربر از این استفاده کرده‌ایم terminal و print آی تی. اسکریپت با یک “/dev/stdin” به عنوان اولین پارامتر $1 نامگذاری شده است، که در آن رویکرد مربوطه، ورودی منظم را از console. این فایل را ذخیره کرده و ببندید.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

باز کن terminal، و فایل جدید به روز شده “input.sh” را به صورت زیر اجرا کنید:

$ bash ورودی.ش

وقتی فایل را با استفاده از bash دستور، برای نوشتن چیزی به خط بعدی می روید. همانطور که در زیر مشاهده می کنید، کاربر یک متن یک خطی نوشته و Enter را فشار دهید.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

متن نوشته شده توسط کاربر ابتدا خوانده می شود و چاپ می شود روی خط بعدی مانند زیر

پیشنهاد می‌کنیم بخوانید:  روش استفاده از دستور Ping در Bash

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

شما حتی می توانید یک فاصله بین ورودی متن خود مانند زیر ایجاد کنید.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

مثال 02:

حال متن فایل را می خوانیم. همان فایل “input.sh” را با ارائه نام فایل “script.sh” به عنوان اولین پارامتر $1 به روز کنید. رویکرد مربوطه از این سند خوانده می شود.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

ما اطلاعات متنی زیر را در فایل “script.sh” به صورت زیر داریم. بیایید بررسی کنیم که چگونه کار می کند.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

فایل “input.sh” را با استفاده از bash فرمان خواهید دید که جریان خوانده شده از فایل ارائه شده “script.sh” خوانده می شود و print آن را در terminal مانند زیر.

$ bash ورودی.ش

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

مثال 03:

بیایید یک مثال برای خواندن هر دایرکتوری یک به یک با استفاده از stdin داشته باشیم. شما باید پارامتر -u را با خواندن در نظر بگیرید. در این، “-u 1” به معنای “خواندن از stdin” است. در این کد، “line” نشان دهنده نام فایل است و از افزایش “i++” برای پرش به فهرست یا فایل بعدی استفاده می شود. همچنین شماره فایل خوانده شده را نیز می شمارد. بیایید این کد را اجرا کنیم تا بررسی کنیم که چه اتفاقی می افتد.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

را اجرا کنید bash فایل “input.sh”. از شما می خواهد متنی را وارد کنید تا به فایل بعدی بروید. در اینجا “comm” نام اولین فایل را نشان می دهد.

$ bash ورودی.ش

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

در حالی که این کار را ادامه می دهید، می بینید که ما لیستی از فایل هایی را داریم که مرور کرده ایم.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

مثال 04:

در این مثال، دو فایل مرتبط برای خواندن داریم. با استفاده از دستور “Chmod” مانند زیر، امتیازات مورد نیاز را به هر دو فایل اختصاص دهید.

chmod نام فایل u+x

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

کد زیر را در فایل “input.sh” بنویسید. تا زمانی که حلقه “while” خطوطی را دریافت کند، خواهد شد print آن خطوط در حالی که “خط” به فایل دیگری “script.sh” اشاره دارد.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

کد زیر را در فایل “script.sh” داریم. در حالی که حلقه در حال اجرا است، شماره خط را چاپ می کند.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

هر دو فایل را با استفاده از “”./” در ابتدای نام فایل اجرا کنید و با استفاده از “”|” جدا کنید. در پوسته مشاهده خواهید کرد که هنگام چاپ متن از فایل ها نیز شماره خطوط را چاپ می کند. این یک روش بسیار ساده برای ارتباط بین دو فایل یا محتوای آنها است.

$ ./script.sh | ./ورودی.ش

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

مثال 05:

اجازه دهید این موضوع را با داشتن این مثال ساده و کارآمد به پایان برسانیم. ما یک فایل “script.sh” با محتویات زیر یا نام افراد داریم. ما این اسامی را یکی یکی از یک فایل دیگر خواهیم خواند.

پیشنهاد می‌کنیم بخوانید:  روش تغییر مسیر stderr به stdout در Bash

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

فایل “input.sh:” را با اسکریپت زیر به روز کنید. در این اسکریپت، ما یک حلقه while برای توضیح دقیق کار “stdin” داریم. ما از خواندن «read –r» در حین خواندن از یک فایل دیگر به غیر از ورودی استاندارد استفاده کرده‌ایم. از سوی دیگر، استفاده از “-u” به عنوان bash-specific، خروجی استاندارد از کاربر در terminal. در اینجا، “نام” متن یا محتوای فایل “script.sh” است. از گزینه “-p” برای “خواندن” استفاده می شود. عبارت read “نام” را از یک فایل دیگر می خواند و از شما می پرسد که آیا می خواهید آن را حذف کنید یا نه. کلمه کلیدی “ip” برای پاسخ کاربر برای تایید عمل حذف استفاده می شود. پاسخ کاربر هر چه باشد، خواهد بود print آن را بیرون در عبارت «if»، بررسی می‌کند که آیا ورودی استاندارد کاربر با «y» یکسان است یا خیر print برخی از پیام ها را به عنوان ذکر این موضوع که “نام” را حذف کرده است. این process تا آخرین محتوای فایل “script.sh” تکرار خواهد شد.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

بیایید نگاهی به خروجی کد بالا بیاندازیم. فایل را با استفاده از bash فرمان سیستم از شما می پرسد که آیا می خواهید این “نام” را حذف کنید یا خیر. “y” را وارد کرده و روی “Enter” ضربه بزنید.

$ bash ورودی.ش

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

اینجا روی با فشار دادن “y”، این کار انجام می شود print “y” و پیامی نشان می دهد که “نام” خاص را حذف کرده است. پس از آن، به “نام” دیگری تغییر می کند.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

از شما می خواهد که نام ها را حذف کنید تا زمانی که تمام نام ها یا محتویات فایل “script.sh” به صورت زیر لوپ شود.

هنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنیدهنگام خواندن Stdin، اسکریپت را به while Loop تبدیل کنید

نتیجه:

ما با استفاده از حلقه “while” در bash اسکریپت

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

زمان انتشار: 1402-12-31 04:11:03

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

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

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