我正在尝试找出如何在 bash 脚本中创建动态 case 语句。
例如,假设我有一个具有以下内容的 awk 语句的输出
red
green
blue
在这种情况下,输出可以随时更改。
如果此 awk 输出中包含一个值,我将尝试执行不同的逻辑。
所以如果上面的数据在 $list 中,那么我在概念上想做类似的事情:
case "${my_var}" in
$list)
.....
something_else)
.....
esac
我正在尝试使用它来构建动态自定义选项卡完成功能(有关一些背景信息,请参阅 http://www.debian-administration.org/article/An_introduction_to_bash_completion_part_2)。
有什么想法吗?
谢谢。
最佳答案
您可以通过执行以下操作在 bash 中创建动态 case 语句:
1) 确保列表以管道 (|) 分隔。 IE。红|绿|蓝
2) 用 eval 包装你的 case 语句
例如:
valid="red|green|blue"
eval "case \"$choice\" in
$valid)
echo do something good here
;;
*)
echo invalid colour
;;
esac"
这适用于简单的变量处理,我不能保证它适用于所有情况。
关于bash - bash 中的动态 case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4687722/