case语句中变量中的转义符 [英] Escape pipe character in variable in case statement
本文介绍了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屋!
查看全文