メニューの作成時に変数/ファイルから読み取るには、Caseステートメントを使用してください。

メニューの作成時に変数/ファイルから読み取るには、Caseステートメントを使用してください。
read -p 'enter your choice [ 1-5 ]' choice
        case $choice in

        1)abcrequest

        2)defresponse

        3)afgRequestReply

        4)FSfReply

        5)ghjrequest

ケースの説明このファイルからこの番号を読み、選択項目を入力してから、その選択項目に移動する必要があります。

私の質問を理解してください。

ベストアンサー1

selectループを使用してください。

#!/usr/bin/env bash

list=~/tmp/list.txt

PS3='enter your choice: '

while read -r index element; do
    _list[index]=$element
done < <(awk -F\) '{print $1,$2}' "$list")

select i in "${_list[@]}"; do
    case $i in
        *)  echo "Choice is ${_list[REPLY]}";;
    esac
done

listメニューを含むファイルのパスに設定する必要があります。私の場合は、以下が含まれます。

$ cat list.txt
1)abcrequest
2)defresponse
3)afgRequestReply
4)FSfReply
5)ghjrequest

PS3使用されるプロンプトになりますselect

次に、各行を見て、listその値から数字を分離し、それから配列を作成します。 _list含まれています:

_list=([1]="abcrequest" [2]="defresponse" [3]="afgRequestReply" [4]="FSfReply" [5]="ghjrequest")

これで、selectメニューの各項目を含むメニューが作成されます_listREPLYそのインデックスの値で操作を実行できるように選択した番号が含まれています_list。 (直接使用することもできます$i

注:コードにexitorステートメントが含まれている場合、または+をbreak押しない限り、このリストにはメッセージが表示され続けます。ctrlc

$ ./script.sh
1) abcrequest
2) defresponse
3) afgRequestReply
4) FSfReply
5) ghjrequest
enter your choice: 4
Choice is FSfReply
enter your choice: 5
Choice is ghjrequest
enter your choice: 2
Choice is defresponse
enter your choice: ^C

おすすめ記事