bash - 如何在 bash case 命令中执行 "else"?

标签 bash

filter="yes"
phonenumbers=(123 456 789 987 654 321)
echo "checking inbox now..."
myphonenumber=(7892)

if [[ "$filter" == "yes" ]]; then
    case "${phonenumbers[@]}" in
        *"$myphonenumber"*) echo "filter is on, phone number matches" 
        ;;
        !="$myphonenumber") echo "filter is on but the phone number doesn't match" 
        ;;
    esac
fi

if [[ "$filter" == "no" ]]; then
    echo "filter off"
fi

我尝试运行该脚本但它不起作用,我应该如何显示 filter is on but the phone number doesn't match 部分?我还在学习,我知道我可以用 if else 语句来做,但我想知道我是否也可以用 case 来做。

最佳答案

用这个 *) 解决了,所以整个代码是:

filter="yes"
phonenumbers=(123 456 789 987 654 321)
echo "checking inbox now..."
myphonenumber=(7892)

if [[ "$filter" == "yes" ]]; then
  case "${phonenumbers[@]}" in
    *"$myphonenumber"*) echo "filter is on, phone number matches" ;;
    *)                  echo "filter is on but the phone number doesn't match" ;;
  esac
fi

if [[ "$filter" == "no" ]]; then
  echo "filter off"
fi

关于bash - 如何在 bash case 命令中执行 "else"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28546200/

相关文章:

bash - 为什么我的 bash 脚本中不断出现语法错误?它是否与 ":"相关?

linux - BASH 遍历文件夹和文件

linux - 使用 sed 和变量剪切日志文件

linux - 移动或删除文件时使 `tail -f` 退出的 bash 脚本

reactjs - 当我在 Ubuntu 中输入任何东西时,它会返回/usr/bin/env : ‘bash\r’ : No such file or directory

json - jq : update json content when path is variable

Bash/WSL - 如何以 root 身份运行命令?

javascript - Node 中的Linux系统变量

bash - 按任何字段中的最高值排序

bash - bash命令行上双尖括号的用途?