我有2个独立的案例陈述
一个用于AZURE cidr块
net_prefix=${VNET_CIDR_BLOCK#*/}
case "$net_prefix" in
0) azure_wildcard_mask=255.255.255.255
;;
esac
和第二个AWS Cidr
aws_net_prefix=${AWS_VPC_CIDR_BLOCK#*/}
case "$aws_net_prefix" in
0) aws_wildcard_mask=255.255.255.255
;;
esac
是否有可能以某种方式将2个以上的CASE合并为一个。例如
A=$1
B=$2
net_prefix=${A#*/}
aws_prefix=${B#*/}
case "$net_prefix" OR "$aws_prefix" in
0) aws_wildcard_mask=255.255.255.255
azure_wildcard_mask=255.255.255.255
;;
我需要aws_wildcard和azure_wildcard_mask变量
我尝试过这个
if [ "$azure_prefix" == "19" ] || [ "$aws_prefix" == "19" ]
then
azure_wildcard="255.255.255.255"
aws_wildcard="255.255.255.255"
elif [ "$azure_prefix" == "20" ] || [ "$aws_prefix" == "20" ]
then
azure_wildcard="127.255.255.255"
aws_wildcard="127.255.255.255"
fi
echo $azure_wildcard
echo $aws_wildcard
并执行它:
./2.sh 10.10.0.0/19 20.20.20.0/20
获得相同的输出
255.255.255.255
255.255.255.255
答案 0 :(得分:0)
case
之后的字符串可以是任意表达式。也许像这样吗?
case $aws_prefix::$net_prefix in
0::* | *::0 )
aws_wildcard_mask=255.255.255.255
azure_wildcard_mask=255.255.255.255 ;;
esac
答案 1 :(得分:0)
将案例抽象为一个函数
A=$1
B=$2
getmask(){
case "$1" in
19) echo 255.255.255.255 ;;
20) echo 127.255.255.255 ;;
esac
}
azure_wildcard_mask=$(getmask ${A#*/})
aws_wildcard_mask=$(getmask ${B#*/})