我有一个名为RESPONSE
的变量,它保存另一个命令的输出 - 它将有多行文本
我正在尝试做一个case语句,如果在RESPONSE
变量中找到两个字符串中的任何一个
这是我的尝试:
case ${RESPONSE} in
"-20002") echo "found -20002"
;;
"-20001") echo "found -20001"
;;
esac
例如,当RESPONSE内部有-20001时,我没有输出。
我做错了什么?我怀疑我需要设置某种多线选项,但是如何?
答案 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