我想做这样的事情,其中星期五在两个匹配的条件下输出:
#!/bin/bash
#!/bin/bash
NOW=$(date +"%a")
case $NOW in
Mon)
echo "Mon";;
Tue|Wed|Thu|Fri)
echo "Tue|Wed|Thu|Fri";;
Fri|Sat|Sun)
echo "Fri|Sat|Sun";;
*) ;;
esac
编写上面的代码后,星期五的唯一输出将是:
星期二|星期三|星期四|星期五
星期五所需的输出:
周二|周三|周四|周五
周五|周六|周日
我知道通常只执行与匹配表达式的第一个模式相对应的命令。
有没有一种方法可以执行其他匹配模式的命令?
编辑:我不是在寻找失败的行为,但这也是一件好事。谢谢steeldriver。
您可以使用;;&
连词。来自man bash
:
Using ;;& in place of ;; causes the shell to test the next pattern list in the statement, if any, and execute any associated list on a successful match.
前任。给定
$ cat myscript
#!/bin/bash
NOW=$(date -d "$1" +"%a")
case $NOW in
Mon)
echo "Mon";;
Tue|Wed|Thu|Fri)
echo "Tue|Wed|Thu|Fri";;&
Fri|Sat|Sun)
echo "Fri|Sat|Sun";;
*) ;;
esac
然后
$ ./myscript thursday
Tue|Wed|Thu|Fri
$ ./myscript friday
Tue|Wed|Thu|Fri
Fri|Sat|Sun
$ ./myscript saturday
Fri|Sat|Sun
有关更多信息(包括其他shell中的等效内容),请参见
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句