bash - bash 中的动态 case 语句

标签 bash scripting bash-completion

我正在尝试找出如何在 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/

相关文章:

linux - 在 bash 中,如何将一列拆分为多个固定维度的列

sql - 从文件创建数组

html - 跨多个网站有条件地注释 html 脚本语句

javascript - 带脚本的文本编辑器...适用于 Linux

bash - Cygwin git 选项卡补全

bash - 如何使用 find 和 du 获取文件夹的总大小?

windows - 如何解决 bash 编码问题?

MySQL如何根据用户ID值将数据从一个表复制到另一个表

Python 或 Bash 打印输出到命令行准备执行

bash - bash 可以在完成命令时省略备份文件吗?