首页 > 解决方案 > 如何在bash shell中的case语句中使用数组?

问题描述

在编写 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

但它没有解决任何人都可以帮助我。

如果有些错误。请不要标记我的帖子

标签: bashshellscripting

解决方案


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

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

    2)
        echo "call"
        ;;

    3)
        echo "bye"
        ;;

    *)
        echo "Unknown"
        ;;
    esac
done

推荐阅读