2

メニュー駆動型のシェル スクリプトに関する提案が必要です。選択肢の入力を求められたときに、このスクリプトのエンド ユーザーが複数のオプションを提供できるようにしたいと考えています。ユーザーは、1 つのオプションを入力することも、複数のオプションを入力することもできます。

たとえば。スクリプトは両方のオプションを処理できる必要があります。

Please enter any option or options between [1 - 4]: 1 2 3 

Please enter any option or options between [1 - 4]: 1

これを反映するためにスクリプトを変更する方法を教えてください。

以下は、参照用のスクリプトのコードです。

#!/bin/sh

while :
do
 clear
 echo " ******** Task performing script ******** "
 echo "1. task1 "
 echo
 echo "2. task2 "
 echo
 echo "3. task3"
 echo
 echo "4. Exit"
 echo
 echo -n "Please enter any option or options between [1 - 4]"
     read opt;
 case $opt in
1)
 echo "Performing task1 . . . .";
 for i in `cat test`
 do
 ...............
 ...............
 done;;
2)
 echo "Performing task2 . . . .";
 for i in `cat test`
 do
 ...............
 ...............
 done;;
3)
 echo "Performing task3 . . . .";
 for i in `cat test`
 do
 ...............
 ...............
 done;;
4)
 echo "Bye $USER";
 exit 1;;
*)
 echo "$opt is an invaild option";
 echo "Press [enter] key to continue. . .";
 read enterKey;;
  esac
done
4

1 に答える 1

2

ステートメントから取得した値を反復するループでcaseステートメントをラップします。forread

while : do;
    # print menu
    read opts

    for opt in $opts; do  # To allow for multiple space-separated choices

        case $opt in
        ...
        esac
    done
done
于 2012-09-17T18:34:33.460 に答える