我想编写带有重叠替代项的case语句。
互联网上的快速搜索为我提供了一些示例,这些示例具有唯一性且不重叠,例如:
case $var in
a) <code> ;;
b) <code> ;;
*) <code> ;;
esac
但是我需要一种替代方案包含多种替代方案和其他工作的方案。我这样想:
case $loglevel in
[0-7]) <code>
case $loglevel in
[0-3] <redirect to /dev/console>
;;
[4-7] <redirect to /dev/null>
;;
esac
;;
*) <code> ;;
esac
我想还有其他更优雅或更合理的方法可以做到这一点。在我看来,这种简单情况的嵌套case语句太多了。
如果您的外壳足够现代,则即使当前条件成功,也可以使用;;&
代替;;
尝试以下条件:
#! /bin/bash
loglevel=$1
case $loglevel in
([0-7]) echo 0..7
;;&
([0-4]) echo 0..4
;;
([5-7]) echo 5..7
;;
(*) echo Ohter
esac
这使
▏~ $ 1.sh 1
0..7
0..4
▏~ $ 1.sh 6
0..7
5..7
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句