在case语句中转义变量中的管道字符

时间:2018-06-05 15:17:39

标签: bash

强大的,所有的, 这段代码

SELECT STRING_AGG(CONCAT(s.object_id,' ',REPLACE(s.name, 'x', 'y')), ',')      
       WITHIN GROUP(ORDER BY s.name)
FROM sys.tables s

工作正常。 但这一个

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

不起作用。 我试图更改引号类型,添加它们以防万一,转义变量中的所有字符 - 没有运气。 在case语句中看起来麻烦是变量中的管道字符。 有没有办法逃脱它?

1 个答案:

答案 0 :(得分:4)

您可以使用扩展通配符:

shopt -s extglob

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

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