2017-07-28 21 views
0

スクリプトで次のコードを使用しています。Bash - 複数の選択がある場合の読み込み

#!/bin/bash 

while true; do 
    read -p "Do your Choice: [1] [2] [3] [4] [E]xit: " choice 
    case "$choice" in 
     [1]*) echo -e "$choice\n"; break;; 
     [2]*) echo -e "$choice\n"; break;; 
     [3]*) echo -e "$choice\n"; break;; 
     [4]*) echo -e "$choice\n"; break;; 
     [Ee]*) echo "exited by user"; exit;; 
     *) echo "Are you kidding me???";; 
    esac 
done 

私の質問は、複数の選択肢を受け入れるためにスクリプトを取得する方法です。 のように入力します。1,4,は、ケース[1][4]を実行しますか?

答えて

2

IFSコンマを含むように設定:

IFS=', ' 

は、ループ内の選択肢を処理(いわゆる入力が配列として扱われるreadため-aフラグに注意):

while true; do 
    read -p "Do your Choice: [1] [2] [3] [4] [E]xit: " -a array 
    for choice in "${array[@]}"; do 
     case "$choice" in 
      [1]*) echo -e "$choice\n";; 
      [2]*) echo -e "$choice\n";; 
      [3]*) echo -e "$choice\n";; 
      [4]*) echo -e "$choice\n";; 
      [Ee]*) echo "exited by user"; exit;; 
      *) echo "Are you kidding me???";; 
     esac 
    done 
done 
+1

私はOPの推測コードは 'while'ループを終了するために' break'を使います。 – Jdamian

+0

良い点、私はそれを取る。 – yinnonsanders

関連する問題