inf*_*ser 1 bash scripting bash-completion
我试图弄清楚如何在bash脚本中创建动态case语句。
例如,假设我有以下内容的awk语句的输出
red
green
blue
Run Code Online (Sandbox Code Playgroud)
在这种情况下,输出可以随时更改。
如果此awk输出中包含值,则我尝试执行不同的逻辑。
因此,如果上面的数据在$ list中,那么我在概念上想做类似的事情:
case "${my_var}" in
$list)
.....
something_else)
.....
esac
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用它来构建动态的自定义标签完成功能(有关某些背景,请参见http://www.debian-administration.org/article/An_introduction_to_bash_completion_part_2)。
有任何想法吗?
谢谢。
您可以通过执行以下操作在bash中创建动态case语句:
1)确保列表用PIPE(|)分隔。IE浏览器 红色|绿色|蓝色
2)将您的case语句包装在评估中
例如:
valid="red|green|blue"
eval "case \"$choice\" in
$valid)
echo do something good here
;;
*)
echo invalid colour
;;
esac"
Run Code Online (Sandbox Code Playgroud)
这适用于简单的变量处理,我不能保证这在所有情况下都适用。