از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
دستور Bash eval
سرفصلهای مطلب
دستور “eval” در استفاده می شود bash برای اجرای آرگومان ها مانند دستور shell. آرگومان ها در یک رشته به هم متصل می شوند و به عنوان ورودی دستور shell برای اجرای دستور گرفته می شوند. “eval” دستور را در پوسته فعلی اجرا می کند. این دستور زمانی مفید است که نیاز به اجرای هر دستوری داشته باشد که شامل یک عملگر خاص یا کلمات کلیدی رزرو شده باشد. این دستور را می توان در هر اسکریپتی که نام متغیر تا زمان اجرای اسکریپت ناشناخته است استفاده کرد. این آموزش به کاربران لینوکس کمک می کند تا استفاده از این دستور را یاد بگیرند.
نحو:
در اینجا، آرگومان ها تجزیه شده و در رشته ای ترکیب می شوند که توسط پوسته اجرا می شود. «eval» پس از اجرای دستور، یک کد وضعیت خروج را برمیگرداند. اگر آرگومان ارائه نشود یا فقط آرگومان تهی ارائه شود، `eval` 0 را به عنوان کد وضعیت خروج برمی گرداند.
مثال-1: دستور “wc” را با استفاده از “eval” اجرا کنید
فرض کنید یک فایل متنی به نام «Department.txt” حاوی متن زیر است. تعداد کل خطوط فایل را می توان با دستور ‘wc’ شمارش کرد.
Department.txt
EEE
ETE
انگلیسی
BBA
داروخانه
دستور زیر دستور wc را برای شمارش کل خطوط فایل ذخیره می کند. Department.txt به متغیر، $mycommand.
دستور ‘eval’ زیر دستور ‘wc’ را اجرا می کند و print تعداد کل خطوط
خروجی:
خروجی این را نشان می دهد Department.txt فایل دارای 6 خط است.
مثال-2: دستور «expr» را با استفاده از «eval» اجرا کنید
ایجاد یک bash فایل به نام evaltest.sh و اسکریپت زیر را اضافه کنید. این اسکریپت دو مقدار صحیح را به متغیر $x و $y اختصاص می دهد. «expr» و «echoدستورات به دو متغیر $c1 و $c2 اختصاص داده می شوند که بعداً با استفاده از دستور “eval” اجرا می شوند.
evaltest.sh
#متغیر x و y را مقداردهی اولیه کنید
ایکس=5
y=15
#متغیر فرمان اول برای تخصیص دستور ‘expr’ برای اضافه کردن مقادیر x$ و $y استفاده میشود
c1=““expr $x + $y”.“
#متغیر فرمان دوم برای تخصیص ` استفاده می شودechoدستور
c2=“echo”
#’eval’ محاسبه خواهد کرد و print مجموع $x و $y با اجرای دستورات c1 $
و c2 دلار متغیرها
ارزیابی c2 دلار $c1
اسکریپت را اجرا کنید.
مجموع 5 و 15 برابر 20 است که در خروجی نشان داده شده است.
مثال-3: مقدار متغیری را که به متغیر دیگری اختصاص داده شده است چاپ کنید
ایجاد یک bash اسکریپت به نام evaltest2.sh با اسکریپت زیر. در اینجا از یک متغیر برای تخصیص نام متغیر دیگری که حاوی داده رشته ای است استفاده می شود. دستور ‘eval’ خواهد شد print مقدار متغیری که حاوی نام متغیر دیگری به عنوان محتوا است.
evaltest2.sh
# یک مقدار رشته را به متغیر $str1 اختصاص دهید
str1=“اسکریپت پوسته”
# نام متغیر “str1” را به متغیر $str2 اختصاص دهید
str2=str1
دستور را در متغیر $command ذخیره کنید
فرمان=“echo”
دستور # ‘eval’ دستور ‘ را اجرا می کندechoدستور و print مقدار متغیر
که شامل که در متغیر دیگر
ارزیابی دستور $ \${$str2}
اسکریپت را اجرا کنید.
مقدار متغیر $str1 چاپ می شود.
راه دیگری برای دسترسی به مقدار یک متغیر وجود دارد که نام آن مقدار متغیر دیگری است. استفاده کردن ‘!’ نماد مقدار این نوع متغیر قابل دسترسی است. دستور زیر را می توان به عنوان جایگزین اسکریپت قبلی استفاده کرد و خروجی یکسان خواهد بود.
مثال-4: یک سری متغیر با مقادیر ایجاد کنید و مجموع مقادیر را با استفاده از دستور ‘eval’ محاسبه کنید.
ایجاد یک bash اسکریپت با نام evaltest3.sh و اسکریپت زیر را اضافه کنید. این اسکریپت یک سری متغیر ایجاد می کند و مقادیر را با استفاده از دستور ‘eval’ در متغیرها ذخیره می کند. مقادیر متغیرها در متغیری به نام $sum اضافه و ذخیره می شود. بعد، `echoدستور با مقادیر رشته به متغیری اختصاص داده می شود که در دستور eval استفاده می شود print مقدار متغیر $sum.
evaltest3.sh
# متغیر $sum را با مقدار 0 مقدار دهی اولیه کنید
مجموع=0
# یک حلقه for اعلام کنید که 4 بار تکرار می شود
برای n که در {1..4}
انجام دادن
# با استفاده از دستور eval چهار متغیر ایجاد کنید
ارزیابی ایکس$n=$n
# مقادیر متغیر را با $sum اضافه کنید
مجموع=$(($ مجموع+x $$n))
انجام شده
# اختصاص دهیدechoدستور با رشته در یک متغیر
فرمان=“echo ‘نتیجه جمع ='”
# دستور ‘eval’ print مقدار جمع با استفاده از متغیرها
ارزیابی دستور $ $ مجموع
اسکریپت را اجرا کنید.
مجموع چهار متغیر 1+2+3+4=10 است که چاپ می شود.
مثال-5: استفاده از دستور ‘eval’ برای حذف لیست فایل ها
ایجاد یک bash فایلی با نام evaltest4.sh با اسکریپت زیر. این اسکریپت سه خوانده خواهد شد command-line آرگومان ها به عنوان نام فایل هایی که حذف می شوند و مقادیر آرگومان را در یک متغیر آرایه، $fn ذخیره می کنند. دستور “rm” در یک متغیر $command ذخیره می شود. حلقه For در اینجا برای بازیابی هر نام فایل و حذف فایل با استفاده از دستور ‘eval’ در صورت وجود فایل اعلام شده است.
evaltest4.sh
#اعلان آرایه
اعلام -آ fn
# سه آرگومان خط فرمان را بخوانید و در سه شاخص آرایه ذخیره کنید
fn[0]=1 دلار
fn[1]=2 دلار
fn[2]=3 دلار
# دستور حذف را در یک متغیر ذخیره کنید
فرمان=“rm”
حلقه # for برای خواندن سه عنصر آرایه سه بار تکرار می شود
برای فهرست مطالب که در 0 1 2
انجام دادن
# وجود یا عدم وجود فایل را بررسی کنید
اگر [[ -f ${fn[$index]} ]]; سپس
# اگر فایل وجود دارد، فایل را حذف کنید
ارزیابی دستور $ ${fn[$index]}
# به کاربر اطلاع دهید که فایل حذف شده است
echo “${fn[$index]} حذف شده است.”
دیگر
#به کاربر اطلاع دهید که فایل موجود نیست
echo “${fn[$index]} وجود ندارد.”
فی
انجام شده
اسکریپت را اجرا کنید.
در اینجا، سه نام فایل در زمان اجرای اسکریپت ارائه شده است. خروجی نشان می دهد که marks.docx و product.docx در مکان فعلی وجود دارد و فایل ها حذف شده اند و item.txt در مکان فعلی وجود ندارد.
نتیجه
هر bash دستور را می توان با دستور ‘eval’ با اعلام به عنوان یک رشته اجرا کرد. دستور ‘eval’ در این آموزش برای اجرای دستورات داخلی مختلف استفاده می شود bash و ایجاد یک سری متغیر. استفاده از دستور ‘eval’ برای کاربران پاک می شود و آنها می توانند پس از مطالعه این آموزش از این دستور برای اهداف مختلف استفاده کنند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 17:28:11