加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 打印出所有交换机案例的列表

发布时间:2020-12-15 22:11:15 所属栏目:安全 来源:网络整理
导读:好奇的问题.是否有可能以某种方式在bash中自动打印出某个开关盒的所有情况?在某种程度上,它保持尽可能的可维护性,这意味着如果添加新的案例以打印出相同的案例,则不必再添加任何代码. 例如,如果案例代表命令,那将是有用的.然后帮助功能可以打印出所有可用的
好奇的问题.是否有可能以某种方式在bash中自动打印出某个开关盒的所有情况?在某种程度上,它保持尽可能的可维护性,这意味着如果添加新的案例以打印出相同的案例,则不必再添加任何代码.

例如,如果案例代表命令,那将是有用的.然后帮助功能可以打印出所有可用的命令.

解决方法

没有直接的方法来实现这一点,但您可以使用数组来维护您的选择:

# Define your choices - be sure not to change their order later; only
# *append* new ones.
choices=( foo bar baz )

# Make the array elements the case branches *in order*.
case "$1" in
    "${choices[0]}")
        echo 'do foo'
        ;;

    "${choices[1]}")
        echo 'do bar'
        ;;

    "${choices[2]}")
        echo 'do baz'
        ;;

    *)
        echo "All choices: ${choices[@]}"

esac

这使得分支的可读性降低,但如果您仔细维护阵列,则它是一种可管理的解决方案.

注意如何将分支条件包含在“…”中,以防止shell将值解释为(类似glob)模式.

也就是说,正如chepner所指出的那样,也许您希望将您的选择定义为匹配字符串变体的模式:

在那种情况下:

>在choices数组中用引号定义模式;例如,选择=(foo bar baz’h *’)>在案例分支中引用它不引用;例如,${choices [3]})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读