bash - 如何在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
但它没有解决任何人都可以帮助我。
如果有些错误。请不要标记我的帖子
解决方案
您必须遍历数组,从而依次将 case 语句应用于每个元素:
for element in "${arr[@]}"; do
case ${element} in
1)
echo "Hello"
;;
2)
echo "call"
;;
3)
echo "bye"
;;
*)
echo "Unknown"
;;
esac
done
推荐阅读
- java - Set 的内部循环中的问题
- string - 如何在字符串的多个位置插入字符?
- android - 如何获取 Firebase 云消息传递的设备令牌?
- python - 如何在不兼容的依赖项上使 pip 退出非零?
- r - 单击某行时如何制作弹出窗口
- java - 尝试进行 JUnit 测试但遇到一些错误
- python - 如何将.nc格式的数据导入python中的数组
- bash - exp_date=2021 年 9 月 9 日星期四 14:06:38 UTC 从 shell 脚本中的 exp_date 减少 30 天
- python - 如何使用虚拟环境为 Python 3.8 导入图形工具?
- javascript - Vue 复杂的 prop 变异和单向数据流