Bash Select (منوها را درست کنید) - وان سرور آکـادمی
Bash Select
Bash Select

Bash Select (منوها را درست کنید)

زمان تقریبی مطالعه: 3 دقیقه

Bash Select (منوها را درست کنید)

در این آموزش اصول اولیه ساخت select در Bash را پوشش خواهیم داد.

ساختار select به شما امکان تولید منو را می دهد.

ساختار Bash select

ساختار select منویی را از لیست آیتم ها ایجاد می کند. تقریباً همان شیوه مشابه حلقه for را دارد:

select ITEM in [LIST]
do
  [COMMANDS]
done

[LIST] می تواند یک سری رشته ها باشد که با فاصله ، طیف وسیعی از اعداد ، خروجی یک فرمان ، یک آرایه و غیره از هم جدا شده اند. با استفاده از متغیر محیط PS3 می توان اعلان سفارشی برای ساختارselect را تنظیم کرد.

هنگامی که ساختار select فراخوانی می شود ، هر مورد از لیست روی صفحه چاپ می شود (خطای استاندارد) ، که قبل از آن یک شماره است.

اگر کاربر عددی را وارد کند که مطابق با شماره یکی از موارد نمایش داده شده باشد ، مقدار [ITEM] روی آن مورد تنظیم می شود. مقدار مورد انتخاب شده در متغیر REPLY ذخیره می شود. در غیر این صورت ، اگر ورودی کاربر خالی باشد ، اعلان و لیست فهرست دوباره نمایش داده می شود.

حلقه select تا زمانی که فرمان break اجرا شود ، اجرا و سریعاً برای ورودی کاربر ادامه خواهد یافت.

برای نشان دادن چگونگی کار ساختار select، بیایید به مثال ساده زیر توجه کنیم:

PS3="Enter a number: "

select character in Sheldon Leonard Penny Howard Raj
do
    echo "Selected character: $character"
    echo "Selected number: $REPLY"
done

اسکریپت، منویی متشکل از موارد لیست را با شماره همراه و خط PS3 نشان میدهد. با وارد کردن شماره کاربر ، اسکریپت کاراکتر و شماره انتخاب شده را چاپ می کند:

1) Sheldon
2) Leonard
3) Penny
4) Howard
5) Raj
Enter a number: 3
Selected character: Penny
Selected number: 3
Enter a number:

یک راز بزرگ درمورد 90 % هاستینگ های ایرانی، اورسل کردن بیش از حد است که باعث افت کیفیت سرورها میشود.

وان سرور با ارائه دسترسی های مختلف این امکان را به شما خواهد داد که تمامی منابع سرورتان را مدیریت و بررسی کنید و همچنین با ارائه گارانتی 100% برگشت وجه ریسک خرید شما را به %0 کاهش میدهد.

برای خرید سرور مجازی با گارانتی 100% بازگشت وجه کلیک کنید.

مثال Bash select

معمولاً select در ترکیب با case و if استفاده می شود.

بیایید به یک مثال عملی تر نگاهی بیندازیم. این یک ماشین حساب ساده است که کاربر را برای ورودی ترغیب می کند و عملیات اساسی ریاضی مانند جمع ، تفریق ، ضرب و تقسیم را انجام می دهد.

PS3="Select the operation: "

select opt in add subtract multiply divide quit; do

  case $opt in
    add)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 + $n2 = $(($n1+$n2))"
      ;;
    subtract)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 - $n2 = $(($n1-$n2))"
      ;;
    multiply)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 * $n2 = $(($n1*$n2))"
      ;;
    divide)
      read -p "Enter the first number: " n1
      read -p "Enter the second number: " n2
      echo "$n1 / $n2 = $(($n1/$n2))"
      ;;
    quit)
      break
      ;;
    *) 
      echo "Invalid option $REPLY"
      ;;
  esac
done

وقتی اسکریپت اجرا شد ، منو و PS3 را سریع دهد. از کاربر خواسته می شود عملیات را انتخاب کرده و سپس دو عدد را وارد کند. بسته به ورودی کاربر ، اسکریپت نتیجه را چاپ می کند. از کاربر خواسته می شود پس از هر انتخاب ، عملیات جدیدی را اجرا کند تا اینکه دستور break انجام شود.

1) add
2) subtract
3) multiply
4) divide
5) quit
Select the operation: 1
Enter the first number: 4
Enter the second number: 5
4 + 5 = 9
Select the operation: 2
Enter the first number: 4
Enter the second number: 5
4 - 5 = -1
Select the operation: 9
Invalid option 9
Select the operation: 5

یکی از اشکالات این اسکریپت این است که فقط با اعداد صحیح کار می کند.

در اینجا نسخه کمی پیشرفته تر است. ما در حال استفاده از ابزار bc که از اعداد اعشاری پشتیبانی می کند تا محاسبات ریاضی را انجام دهد. همچنین ، کد تکراری در داخل یک عملکرد قرار می گیرد .

calculate () {
  read -p "Enter the first number: " n1
  read -p "Enter the second number: " n2
  echo "$n1 $1 $n2 = " $(bc -l <<< "$n1$1$n2")
}

PS3="Select the operation: "

select opt in add subtract multiply divide quit; do

  case $opt in
    add)
      calculate "+";;
    subtract)
      calculate "-";;
    multiply)
      calculate "*";;
    divide)
      calculate "/";;
    quit)
      break;;
    *) 
      echo "Invalid option $REPLY";;
  esac
done
1) add
2) subtract
3) multiply
4) divide
5) quit
Select the operation: 4
Enter the first number: 8
Enter the second number: 9
8 / 9 =  .88888888888888888888
Select the operation: 5   

نتیجه گیری

ساختار select به شما امکان می دهد منوها را به راحتی تولید کنید. این خصوصاً هنگام نوشتن اسکریپت های پوسته که به ورودی کاربر نیاز دارند ، بسیار مفید است.

Rate this post