忽略多个可能值的Case语句

时间:2018-06-18 23:00:01

标签: linux shell case-statement

我想执行一个包含以下代码的shell脚本。

value=`echo "false"`
case $1 in "26492|26851|27407|26493")
     value=`echo "true"`
     ;;
esac

如果第一个参数是一个指定的值,则会打印一个单词 true ,否则将打印 false

  

26492 | 26851 | 27407 | 26493

我没有得到所需的输出。

我已按此sh -x script name 27407执行。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这里有两个问题:

  1. 您不能在引号内包含选项指示符(管道符号|),因为这会使bash将整个字符串视为单个可能的值。
  2. 您的echo语句包含在后面的标记中,并且已分配给value。所以会发生什么,而不是将true作为输出,而是让value的价值发生了变化。
  3. 尝试:

    case $1 in 26492|26851|27407|26493)
         echo "true"
         ;;
    esac