bash - 是否可以在 Bash 脚本的 switch case 中组合两个条件?

标签 bash shell script

假设我想读取两个输入,比如 x 和 y。根据它们的值,我想在 Bash 脚本中执行 switch case。
说 4 种输入组合是

  • x=0 , y=0 ,
  • x=0 , y=1 ,
  • x=1 , y=0 ,
  • x=1 , y=1 .

  • 但我不知道如何使用脚本来做到这一点。我已经尝试过代码,但它得到了语法错误。是否可以在 Bash 脚本的 switch case 中组合两个条件?
    echo "enter x"
    read x
    
    echo "enter y"
    read y
    
    case "$x" "$y" in
        "zero" "zero") echo "condtion 1"
        ;;
        "zero" "one") echo "conditon 2"
        ;;
        "one" "zero" ) echo "condition 3"
        ;;
        "one" "one") echo "condition 4"
        ;;
    esac
    

    最佳答案

    你可以想到$x$y作为二进制数。

    #! /bin/bash
    
    read -p 'enter x: ' x
    read -p 'enter y: ' y
    
    case $((2#$x$y)) in
      0) echo 'condition 1';;
      1) echo 'condition 2';;
      2) echo 'condition 3';;
      3) echo 'condition 4';;
    esac
    
    这最多适用于 64 种不同的状态:
    $ echo $((64#11))
    65
    

    关于bash - 是否可以在 Bash 脚本的 switch case 中组合两个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69070662/

    相关文章:

    linux - 如何使用 bash 查找某个文件中的哪些行不是由另一个文件中的行开始的?

    shell - Emacs shell 中的响铃

    linux - Rundeck 身份验证错误甚至添加了正确的 ssh_用户名和密码

    windows - 在 Windows 脚本中运行 ffmpeg 以缩小 MP3 文件时删除错误

    linux - 添加一个用户并为许多服务器linux给他相同的密码

    bash - 如何在 Perl 中使用 Shell 参数扩展?

    linux - 尝试将 1 天添加到 bash 脚本中的时间戳,但它只添加了 19 小时

    python - 如何重新启动特定正在运行的python文件Ubuntu

    bash - 如何从wget获取真实文件名

    linux - 如何在 ssh 命令中使用长输入参数正确转义 qsub 命令?