首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仪表板中的可变规测试?

仪表板中的可变规测试?
EN

Unix & Linux用户
提问于 2020-09-28 19:58:35
回答 1查看 462关注 0票数 -1

我用[a-z][0-9]的形式得到了很多可能的变量,比如一个字母和一个数字。有办法用破折号测试他们吗?类似于:

代码语言:javascript
运行
复制
myvar=o7
if [ $myvar=o[0-4] ]; then 
"do this"
elif [ $myvar=o[5-7] ]; then
"do that"
fi

Thx预先:)

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-09-28 20:33:51

您不需要正则表达式来完成您想要做的事情:

代码语言:javascript
运行
复制
case $myvar in
    o[0-4])
        echo 'do this'
        ;;
    o[5-7])
        echo 'do that'
        ;;
    *)
        echo 'unsupported case'
esac

或者,更简洁地说,

代码语言:javascript
运行
复制
case $myvar in
    o[0-4]) echo 'do this' ;;
    o[5-7]) echo 'do that' ;;
    *)      echo 'unsupported case'
esac

在这里,值$myvar依次与每个给定的大小写标签相匹配,并且将执行与第一个匹配的标签对应的代码。;;从下一个标签中分隔标签的代码(这意味着最后一个标签在esac之前不需要;; )。

每个标签都是表单pattern)(pattern)上的球形模式,而不是正则表达式。

case...esac结构提供了一种标准而紧凑的方式来完成同样可以编写的事情,例如

代码语言:javascript
运行
复制
if [[ $myvar == o[0-4] ]]; then
    echo 'do this'
elif [[ $myvar == o[5-7] ]]; then
    echo 'do that'
else
    echo 'unsupported case'
fi

bash和类似的shell中。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/611900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档