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

سرور مجازی NVMe

Bash if… other statement

0 8
زمان لازم برای مطالعه: 5 دقیقه



این مقاله شما را از طریق اصول اولیه راهنمایی می کند bash if...else بیانیه و روش استفاده از آن در اسکریپت های پوسته را به شما توضیح دهد.

تصمیم گیری یکی از اساسی ترین مفاهیم برنامه نویسی کامپیوتر است. مانند هر زبان برنامه نویسی دیگری، if، if...else، if...elif...else، و تودرتو if عبارات در Bash برای اجرای کد زمانی که یک شرط خاص وجود دارد استفاده می شود.

if بیانیه

ضربه شدید if شرطی ها می توانند اشکال مختلفی داشته باشند. ابتدایی ترین if بیانیه به شکل زیر است:

if TEST-COMMAND
then
  STATEMENTS
fi

را if بیانیه با شروع می شود if کلمه کلیدی به دنبال عبارت شرطی و the then کلمه کلیدی. بیانیه با پایان می یابد fi کلمه کلیدی.

اگر TEST-COMMAND ارزیابی می کند True، STATEMENTS اعدام می شوند. اگر TEST-COMMAND برمی گرداند False، هیچ اتفاقی نمی افتد؛ را STATEMENTS نادیده گرفته می شوند.

به طور کلی، همیشه تمرین خوبی است که کد خود را فرورفته و بلوک های کد را با خطوط خالی جدا کنید. اکثر مردم استفاده از تورفتگی 4 فاصله یا 2 فاصله را انتخاب می کنند. تورفتگی ها و خطوط خالی کد شما را خواناتر و منظم تر می کند.

بیایید به اسکریپت مثال زیر نگاه کنیم که بررسی می کند آیا یک عدد معین بزرگتر از 10 است یا خیر:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
fi

کد را در یک فایل ذخیره کنید و آن را از خط فرمان اجرا کنید:

bash test.sh

اسکریپت از شما می خواهد که یک عدد را وارد کنید. برای مثال، اگر عدد 15 را وارد کنید، test دستور به عنوان ارزیابی خواهد شد true زیرا 15 بزرگتر از 10 است و echo
فرمان در داخل then بند اجرا خواهد شد.

The variable is greater than 10.

if...else بیانیه

باش if...else بیانیه به شکل زیر است:

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

اگر TEST-COMMAND ارزیابی می کند True، STATEMENTS1 اجرا خواهد شد. در غیر این صورت، اگر TEST-COMMAND برمی گرداند False، STATEMENTS2 اجرا خواهد شد. شما فقط می توانید یکی داشته باشید else بند در بیانیه

بیایید یک را اضافه کنیم else بند به اسکریپت مثال قبلی:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
else
  echo "The variable is equal or less than 10."
fi

اگر کد را اجرا کنید و یک عدد وارد کنید، اسکریپت انجام می شود print مبتنی بر پیام متفاوت روی بزرگتر یا کوچکتر/برابر 10 عدد.

پیشنهاد می‌کنیم بخوانید:  روش نصب Webmin در CentOS 8

if...elif...else بیانیه

باش if...elif...else بیانیه به شکل زیر است:

if TEST-COMMAND1
then
  STATEMENTS1
elif TEST-COMMAND2
then
  STATEMENTS2
else
  STATEMENTS3
fi

اگر TEST-COMMAND1 ارزیابی می کند True، STATEMENTS1 اجرا خواهد شد. اگر TEST-COMMAND2 ارزیابی می کند True، STATEMENTS2 اجرا خواهد شد. اگر هیچ یک از دستورات تست به عنوان ارزیابی نشوند True، STATEMENTS2 اجرا خواهد شد.

می توانید یک یا چند مورد داشته باشید elif بندهای بیانیه را else بند اختیاری است

شرایط به صورت متوالی ارزیابی می شوند. زمانی که یک شرط برگردد True، شرایط باقیمانده آزمایش نمی شوند و کنترل برنامه به انتهای آن منتقل می شود if بیانیه.

بیایید یک را اضافه کنیم elif بند به اسکریپت قبلی:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
  echo "The variable is equal to 10."
else
  echo "The variable is less than 10."
fi

تو در تو if بیانیه

Bash به شما اجازه می دهد لانه کنید if اظهارات درون if بیانیه.

شما می توانید چندین قرار دهید if اظهارات داخل دیگری if بیانیه.

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

#!/bin/bash

echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3

if [[ $VAR1 -ge $VAR2 ]]
then
  if [[ $VAR1 -ge $VAR3 ]]
  then
    echo "$VAR1 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
else
  if [[ $VAR2 -ge $VAR3 ]]
  then
    echo "$VAR2 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
fi

در اینجا روش خروجی به نظر می رسد:

Enter the first number: 4
Enter the second number: 7
Enter the third number: 2
7 is the largest number.
به طور کلی، استفاده از آن کارآمدتر است case بیانیه به جای تو در تو if بیانیه.

شرایط چندگانه

منطقی OR و AND عملگرها به شما این امکان را می دهند که از چندین شرط در if بیانیه.

در اینجا نسخه دیگری از اسکریپت به است print بزرگترین عدد در بین این سه عدد در این نسخه به جای تو در تو if عبارات، ما از منطق استفاده می کنیم AND (&&) اپراتور.

#!/bin/bash

echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3

if [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
  echo "$VAR1 is the largest number."
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
  echo "$VAR2 is the largest number."
else
  echo "$VAR3 is the largest number."
fi

اپراتورهای تست

در باش، test دستور یکی از شکل های نحو زیر را می گیرد:

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

برای اینکه اسکریپت قابل حمل باشد، از تست قدیمی استفاده کنید [ command, which is available روی all POSIX shells. The new upgraded version of the test command [[ (double brackets) is supported روی most modern systems using Bash, Zsh, and Ksh as a default shell.

پیشنهاد می‌کنیم بخوانید:  روش غیرفعال کردن SELinux در CentOS 8

To negate the test expression, use the logical NOT (!) operator. When comparing strings
, always use single or double quotes to avoid word splitting and globbing issues.

Below are some of the most commonly used operators:

  • -n VAR – True if the length of VAR is greater than zero.
  • -z VAR – True if the VAR is empty.
  • STRING1 = STRING2 – True if STRING1 and STRING2 are equal.
  • STRING1 != STRING2 – True if STRING1 and STRING2 are not equal.
  • INTEGER1 -eq INTEGER2 – True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 – True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 – True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 – True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 – True if INTEGER1 is equal or less than INTEGER2.
  • -h FILE – True if the FILE exists and is a symbolic link.
  • -r FILE – True if the FILE exists and is readable.
  • -w FILE – True if the FILE exists and is writable.
  • -x FILE – True if the FILE exists and is executable.
  • -d FILE – True if the FILE exists and is a directory.
  • -e FILE – True if the FILE exists and is a file, regardless of type (node, directory, socket, etc.).
  • -f FILE – True if the FILE exists
    and is a regular file (not a directory or device).

Conclusion

The if, if...else and if...elif...else statements allow you to control the flow of the Bash script’s execution by evaluating given conditions.

If the condition evaluated to false, the code in the optional else clause will be executed.

If you have any questions or feedback, feel free to leave a comment.

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

زمان انتشار: 1403-04-03 13:27:03

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

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

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