#!/bin/bash
# Bash Menu Script Example
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you chose choice 1"
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice $REPLY which is $opt"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
Thêm break
câu lệnh bất cứ nơi nào bạn cần select
vòng lặp để thoát. Nếu a break
không được thực hiện, các select
vòng lặp câu lệnh và menu sẽ được hiển thị lại.
Trong tùy chọn thứ ba, tôi đã bao gồm các biến được đặt bởi select
câu lệnh để chứng minh rằng bạn có quyền truy cập vào các giá trị đó. Nếu bạn chọn nó, nó sẽ xuất ra:
you chose choice 3 which is Option 3
Bạn có thể thấy $REPLY
có chứa chuỗi bạn đã nhập tại dấu nhắc. Nó được sử dụng như một chỉ mục vào mảng ${options[@]}
như thể mảng dựa trên 1. Biến $opt
chứa chuỗi từ chỉ mục đó trong mảng.
Lưu ý rằng các lựa chọn có thể là một danh sách đơn giản trực tiếp trong select
câu lệnh như sau:
select opt in foo bar baz 'multi word choice'
nhưng bạn không thể đặt một danh sách như vậy trong một biến vô hướng vì các khoảng trắng trong một trong các lựa chọn.
Bạn cũng có thể sử dụng tệp toàn cầu nếu bạn chọn trong số các tệp:
select file in *.tar.gz
seq 10 | fzf
. Hạn chế là fzf không được cài đặt theo mặc định. Bạn có thể tìm thấy fzf tại đây: github.com/junegunn/fzf