Shell-Script
如何僅在一行中 bash 腳本菜單
我正在腳本(#!/bin/bash)中創建一個菜單,它可以按我的需要工作:
PS3='[ menu ] choose partition tool:' options=("fdisk" "cfdisk" "continue") select opt in "${options[@]}" do case $opt in "fdisk") fdisk /dev/sda ;; "cfdisk") cfdisk ;; "continue") break ;; *) echo "invalid option $REPLY" ;; esac done
這是螢幕上的結果:
1) fdisk 2) cfdisk 3) continue [ menu ] choose partition tool:
我怎樣才能改變這樣的佈局(?):
[ menu ] choose partition tool (1) fdisk (2) cfdisk (3) continue:
簡而言之,我知道在 PS3= 中編寫選項就足夠了:*PS3=’$$ menu $$選擇分區工具 (1) fdisk (2) cfdisk (3) continue:’*但我想知道如何不顯示選項列表(根據描述)。
您必須為您
select
自己的自定義版本編寫程式碼。像這樣的東西可能會起作用:#!/bin/bash # PS3='[ menu ] choose partition tool:' options=('fdisk' 'cfdisk' 'continue') while : do printf '%s' "$PS3" for ((i = 0; i < ${#options[@]}; i++)) do printf ' (%d) %s' $((i+1)) "${options[i]}" done read -p ': ' opt case "$opt" in 1|"fdisk") fdisk /dev/sda ;; 2|"cfdisk") cfdisk ;; 3|"continue") break ;; *) echo "invalid option $opt" ;; esac done