引用表达式匹配case语句

时间:2018-07-19 12:40:14

标签: bash shell

有没有办法在case语句的命令列表中引用表达式匹配项?换句话说,不要这样做:

case $(returns_a_string.sh) in
  foo) echo "foo" ;;
  bar) echo "bar" ;;
  *) echo "The string returned was not foo or bar" ;;
esac

我可以这样做吗?

case $(returns_a_string.sh) in
  foo|bar) echo "$expression_match" ;;
  *) echo "The string returned was not foo or bar" ;;
esac

2 个答案:

答案 0 :(得分:1)

您可以先将$(returns_a_string.sh)的标准输出设置为变量,然后再使用。

答案 1 :(得分:1)

调用它的方式不会存储结果,因此您以后无法在echo调用中调用它。

尝试以下方法:

string="$(returns_a_string.sh)"
case "$string" in
  foo|bar) echo "$string" ;;
  *) echo "The string returned was not foo or bar" ;;
esac