如何在case语句中的变量中分配和使用多个值?

时间:2018-04-27 19:53:51

标签: bash

用户将输入1-8个不同的值/值以获得一个或多个输出 例如: 用户输入" 1 3 5" 输出: 一 三 5

如何做到这一点?

read -p "1-8" one two three four five six seven eight

all = ($one $two $three $four $five $six $seven $eight)

case $all in
   1) echo "one";;
   2) echo "two";;
   3) echo "three";;
   4) echo "four";;
   5) echo "five";;
   6) echo "six";;
   7) echo "seven";;
   8) echo "eight";;
esac;

1 个答案:

答案 0 :(得分:2)

你需要一个循环,直接读入数组会更简单:

read -p "1-8" -ra values
for x in "${values[@]}"; do
    case $x in 
      1) echo "one" ;;
      # etc
    esac
done

另一个数组甚至比case语句更简单:

numbers=(zero one two three four five six seven eight)
read -p "1-8" -ra values
for x in "${values[@]}"; do
    echo "${numbers[x]}"
done