加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

BASH不是在案件中

发布时间:2020-12-15 22:02:12 所属栏目:安全 来源:网络整理
导读:嘿伙计们,我正试图找出一个在案件中做一个NOT条款的理智方式.我这样做的原因是为了 当一个案例被满足时代码转换,即如果我击中avi,没有理由再将它变成avi,我可以 只是把它移开(这是我的情况应该做的范围).无论如何,我有一些 我写的那些原型代码给出了我想要做
嘿伙计们,我正试图找出一个在案件中做一个NOT条款的理智方式.我这样做的原因是为了
当一个案例被满足时代码转换,即如果我击中avi,没有理由再将它变成avi,我可以
只是把它移开(这是我的情况应该做的范围).无论如何,我有一些
我写的那些原型代码给出了我想要做的事情的要点.

#!/bin/bash
for i in $(seq 1 3); do 

    echo "trying: $i"

    case $i in
        ! 1)    echo "1" ;;     # echo 1 if we aren't 1
        ! 2)    echo "2" ;;     # echo 2 if we aren't 2
        ! 3)    echo "3" ;;     # echo 3 if we aren't 3
        [1-3]*) echo "! $i" ;;  # echo 1-3 if we are 1-3
    esac

    echo -e "n"

done

预期的结果将是这样的

2 3 ! 1
1 3 ! 2
1 2 ! 3

非常感谢帮助,谢谢.

解决方法

这与仅执行第一场比赛的案例设计相反.如果你想在多个匹配项上执行(并且在你的设计中,3和2想要在1和2上执行),则case是错误的构造.使用多个if块.

[[ $i = 1 ]] || echo "1"
[[ $i = 2 ]] || echo "2"
[[ $i = 3 ]] || echo "3"
[[ $i = [1-3]* ]] && echo "! $i"

因为case只执行第一次匹配,所以只有一个“did-not-match”处理程序才有意义;这就是*)的目标.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读