case语句中变量中的转义符 [英] Escape pipe character in variable in case statement

查看:88
本文介绍了case语句中变量中的转义符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

全能, 这段代码

hst="hostname-m-0"
var1="*-m-*"
case $hst in
  $var1)
    echo "yes"
esac

正常工作. 但是这个

hst="hostname-m-0"
var1="*-m|*-m-0"
case $hst in
  $var1)
    echo "yes"
esac

不起作用. 我试图更改引号类型,以防万一,将所有字符都转义为变量-不走运. 看起来麻烦是在case语句中变量的管道字符中. 有什么办法可以逃脱它?

does not work. I tried to change quotes type, add them in case, escape all characters in variable - no luck. Looks like trouble is in pipe character in variable in case statement. Is there any way to escape it?

推荐答案

您可以为此使用扩展的globbing:

You can use extended globbing for this:

shopt -s extglob

hst="hostname-m-0"
var1="*-m@(|-0)"

case $hst in
  $var1)
    echo "yes"
esac

这篇关于case语句中变量中的转义符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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