在Bash中使用变量作为案例模式 [英] Using a variable as a case pattern in Bash

查看:12
本文介绍了在Bash中使用变量作为案例模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试编写一个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

这篇关于在Bash中使用变量作为案例模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆