如何在case语句中搜索多行var以查找字符串?

时间:2014-07-30 17:31:36

标签: regex ksh

我有一个名为RESPONSE的变量,它保存另一个命令的输出 - 它将有多行文本

我正在尝试做一个case语句,如果在RESPONSE变量中找到两个字符串中的任何一个

,它将执行一些操作

这是我的尝试:

   case ${RESPONSE} in 
    "-20002") echo "found -20002"
    ;;
    "-20001") echo "found -20001"
    ;;
   esac

例如,当RESPONSE内部有-20001时,我没有输出。

我做错了什么?我怀疑我需要设置某种多线选项,但是如何?

1 个答案:

答案 0 :(得分:2)

我做了一些小测试用例的实验。令我惊讶的是,在dbl-quotes中包含案例匹配目标会影响结果,但是....在这里你去。

cat RESPONSE.txt
some stuff
-20002
more stuff

RESP=$(< RESPONSE.txt) 

case $RESP in 
 # bad! "*-20002*" ) echo found 20002 ;; 
 *-20002* ) echo found 20002 ;; 
 # bad! "*-20004*" ) echo found 20004 ;; 
 *-20004* ) echo found 20004 ;; 
  * ) echo no match ;;
esac

<强>输出

found 20002

它与

的作用相同
case "$RESP" in ....

@ajay说

注意 - dbl-quote可能无效,因为它导致*失去其特殊含义


我同意这一点。不知道为什么它被拒绝作为编辑。没时间担心它。

IHTH