如何在bash shell中的case语句中使用数组?

How to use array in case statement in bash shell?

在编写 bash 脚本时,我遇到了一个问题,我想在 运行 命令的 case 语句中使用数组。
例如,如果我的数组包含

1 2 3

我的情况有条件

1)
  echo "Hello"
  ;;

2)
  echo "call"
  ;;

3)
  echo "bye"
  ;;

*)
  echo "Unknown"
  ;;

然后打印输出

Hello
call
bye

我的数组中存储的所有项目都应该检查条件。
在这样做的同时我尝试了这个

case ${!arr[@]} in
  1)
    echo "Hello"
    ;;

  2)
    echo "call"
    ;;

  3)
    echo "bye"
    ;;

  *)
    echo "Unknown"
    ;;
esac

但没有成功任何人都可以帮助我。

如果有错误。请不要标记我的 post

您必须遍历数组,然后依次将 case 语句应用于每个元素:

for element in "${arr[@]}"; do
    case ${element} in
    1)
        echo "Hello"
        ;;

    2)
        echo "call"
        ;;

    3)
        echo "bye"
        ;;

    *)
        echo "Unknown"
        ;;
    esac
done