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

سرور مجازی NVMe

دستور Bash eval

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


دستور “eval” در استفاده می شود bash برای اجرای آرگومان ها مانند دستور shell. آرگومان ها در یک رشته به هم متصل می شوند و به عنوان ورودی دستور shell برای اجرای دستور گرفته می شوند. “eval” دستور را در پوسته فعلی اجرا می کند. این دستور زمانی مفید است که نیاز به اجرای هر دستوری داشته باشد که شامل یک عملگر خاص یا کلمات کلیدی رزرو شده باشد. این دستور را می توان در هر اسکریپتی که نام متغیر تا زمان اجرای اسکریپت ناشناخته است استفاده کرد. این آموزش به کاربران لینوکس کمک می کند تا استفاده از این دستور را یاد بگیرند.

نحو:

ارزیابی [argument …]

در اینجا، آرگومان ها تجزیه شده و در رشته ای ترکیب می شوند که توسط پوسته اجرا می شود. «eval» پس از اجرای دستور، یک کد وضعیت خروج را برمی‌گرداند. اگر آرگومان ارائه نشود یا فقط آرگومان تهی ارائه شود، `eval` 0 را به عنوان کد وضعیت خروج برمی گرداند.

مثال-1: دستور “wc” را با استفاده از “eval” اجرا کنید

فرض کنید یک فایل متنی به نام «Department.txt” حاوی متن زیر است. تعداد کل خطوط فایل را می توان با دستور ‘wc’ شمارش کرد.

Department.txt

CSE
EEE
ETE
انگلیسی
BBA
داروخانه

دستور زیر دستور wc را برای شمارش کل خطوط فایل ذخیره می کند. Department.txt به متغیر، $mycommand.

$ دستور من=“wc -l Department.txt”

دستور ‘eval’ زیر دستور ‘wc’ را اجرا می کند و print تعداد کل خطوط

$ ارزیابی $mycommand

خروجی:

خروجی این را نشان می دهد Department.txt فایل دارای 6 خط است.

دستور Bash eval

مثال-2: دستور «expr» را با استفاده از «eval» اجرا کنید

ایجاد یک bash فایل به نام evaltest.sh و اسکریپت زیر را اضافه کنید. این اسکریپت دو مقدار صحیح را به متغیر $x و $y اختصاص می دهد. «expr» و «echoدستورات به دو متغیر $c1 و $c2 اختصاص داده می شوند که بعداً با استفاده از دستور “eval” اجرا می شوند.

پیشنهاد می‌کنیم بخوانید:  Bash Declare –a برای آرایه ها

evaltest.sh

#!/صندوقچه/bash
#متغیر x و y را مقداردهی اولیه کنید
ایکس=5
y=15

#متغیر فرمان اول برای تخصیص دستور ‘expr’ برای اضافه کردن مقادیر x$ و $y استفاده می‌شود
c1=“expr $x + $y”.

#متغیر فرمان دوم برای تخصیص ` استفاده می شودechoدستور
c2=“echo”

#’eval’ محاسبه خواهد کرد و print مجموع $x و $y با اجرای دستورات c1 $

و c2 دلار متغیرها
ارزیابی c2 دلار $c1

اسکریپت را اجرا کنید.

$ bash evaltest.sh

مجموع 5 و 15 برابر 20 است که در خروجی نشان داده شده است.

دستور Bash evalدستور Bash eval

مثال-3: مقدار متغیری را که به متغیر دیگری اختصاص داده شده است چاپ کنید

ایجاد یک bash اسکریپت به نام evaltest2.sh با اسکریپت زیر. در اینجا از یک متغیر برای تخصیص نام متغیر دیگری که حاوی داده رشته ای است استفاده می شود. دستور ‘eval’ خواهد شد print مقدار متغیری که حاوی نام متغیر دیگری به عنوان محتوا است.

evaltest2.sh

#!/صندوقچه/bash

# یک مقدار رشته را به متغیر $str1 اختصاص دهید
str1=“اسکریپت پوسته”

# نام متغیر “str1” را به متغیر $str2 اختصاص دهید
str2=str1
دستور را در متغیر $command ذخیره کنید
فرمان=“echo”

دستور # ‘eval’ دستور ‘ را اجرا می کندechoدستور و print مقدار متغیر

که شامل که در متغیر دیگر
ارزیابی دستور $ \${$str2}

اسکریپت را اجرا کنید.

$ bash evaltest2.sh

مقدار متغیر $str1 چاپ می شود.

دستور Bash evalدستور Bash eval

راه دیگری برای دسترسی به مقدار یک متغیر وجود دارد که نام آن مقدار متغیر دیگری است. استفاده کردن ‘!’ نماد مقدار این نوع متغیر قابل دسترسی است. دستور زیر را می توان به عنوان جایگزین اسکریپت قبلی استفاده کرد و خروجی یکسان خواهد بود.

$ str1=“اسکریپت پوسته”; str2=str1; فرمان=“echo”; ارزیابی دستور $ ${!str2}

مثال-4: یک سری متغیر با مقادیر ایجاد کنید و مجموع مقادیر را با استفاده از دستور ‘eval’ محاسبه کنید.

ایجاد یک bash اسکریپت با نام evaltest3.sh و اسکریپت زیر را اضافه کنید. این اسکریپت یک سری متغیر ایجاد می کند و مقادیر را با استفاده از دستور ‘eval’ در متغیرها ذخیره می کند. مقادیر متغیرها در متغیری به نام $sum اضافه و ذخیره می شود. بعد، `echoدستور با مقادیر رشته به متغیری اختصاص داده می شود که در دستور eval استفاده می شود print مقدار متغیر $sum.

evaltest3.sh

#!/صندوقچه/bash

# متغیر $sum را با مقدار 0 مقدار دهی اولیه کنید
مجموع=0

# یک حلقه for اعلام کنید که 4 بار تکرار می شود
برای n که در {1..4}
انجام دادن
# با استفاده از دستور eval چهار متغیر ایجاد کنید
ارزیابی ایکس$n=$n

پیشنهاد می‌کنیم بخوانید:  روش حذف کاراکترهای خاص با استفاده از sed

# مقادیر متغیر را با $sum اضافه کنید
مجموع=$(($ مجموع+x $$n))
انجام شده

# اختصاص دهیدechoدستور با رشته در یک متغیر
فرمان=“echo ‘نتیجه جمع ='”

# دستور ‘eval’ print مقدار جمع با استفاده از متغیرها
ارزیابی دستور $ $ مجموع

اسکریپت را اجرا کنید.

$ bash evaltest3.sh

مجموع چهار متغیر 1+2+3+4=10 است که چاپ می شود.

دستور Bash evalدستور Bash eval

مثال-5: استفاده از دستور ‘eval’ برای حذف لیست فایل ها

ایجاد یک bash فایلی با نام evaltest4.sh با اسکریپت زیر. این اسکریپت سه خوانده خواهد شد command-line آرگومان ها به عنوان نام فایل هایی که حذف می شوند و مقادیر آرگومان را در یک متغیر آرایه، $fn ذخیره می کنند. دستور “rm” در یک متغیر $command ذخیره می شود. حلقه For در اینجا برای بازیابی هر نام فایل و حذف فایل با استفاده از دستور ‘eval’ در صورت وجود فایل اعلام شده است.

evaltest4.sh

#!/صندوقچه/bash

#اعلان آرایه
اعلام 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]} وجود ندارد.”
فی
انجام شده

اسکریپت را اجرا کنید.

$ bash evaltest4.sh marks.docx item.txt product.docx

در اینجا، سه نام فایل در زمان اجرای اسکریپت ارائه شده است. خروجی نشان می دهد که marks.docx و product.docx در مکان فعلی وجود دارد و فایل ها حذف شده اند و item.txt در مکان فعلی وجود ندارد.

دستور Bash evalدستور Bash eval

نتیجه

هر bash دستور را می توان با دستور ‘eval’ با اعلام به عنوان یک رشته اجرا کرد. دستور ‘eval’ در این آموزش برای اجرای دستورات داخلی مختلف استفاده می شود bash و ایجاد یک سری متغیر. استفاده از دستور ‘eval’ برای کاربران پاک می شود و آنها می توانند پس از مطالعه این آموزش از این دستور برای اهداف مختلف استفاده کنند.

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

زمان انتشار: 1402-12-31 17:28:11

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

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

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