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

在Bash中使用变量作为案例模式

发布时间:2020-12-15 18:53:32 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个Bash脚本,该脚本在case语句中使用一个变量作为模式.但是我不能让它上班. 案例陈述: case "$1" in $test) echo "matched" ;; *) echo "didn't match" ;;esac 我已经尝试使用$test作为aaa | bbb | ccc,(aaa | bbb | ccc),[aaa,bbb,ccc]和其



我正在尝试编写一个Bash脚本,该脚本在case语句中使用一个变量作为模式.但是我不能让它上班.

案例陈述:

case "$1" in
    $test)
        echo "matched"
        ;;
    *)
        echo "didn't match"
        ;;
esac

我已经尝试使用$test作为aaa | bbb | ccc,(aaa | bbb | ccc),[aaa,bbb,ccc]和其他几种组合.我也尝试过这样的case语句:@($test),@($(echo $test)),$($test).也没有成功.

编辑

为了清楚起见,我希望变量表示多个模式,如下所示:

case "$1" in
    aaa|bbb|ccc)
        echo "matched"
        ;;
    *)
        echo "didn't match"
        ;;
esac
您可以使用extglob选项:
#! /bin/bash

shopt -s extglob         # enables pattern lists like +(...|...)
test='+(aaa|bbb|ccc)'

for x in aaa bbb ccc ddd ; do
    echo -n "$x "
    case "$x" in
        $test) echo Matches.
        ;;
        *) echo Does not match.
    esac
done

(编辑:李大同)

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

    推荐文章
      热点阅读