BASH множественная переменная в операторе CASE - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть 2 отдельных оператора case

один для блока AZUR 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 ДЕЛО в один.например

 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

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Абстрагируйте регистр в функцию:

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#*/})
0 голосов
/ 18 февраля 2019

Строка после case может быть произвольным выражением.Возможно, что-то вроде этого?

case $aws_prefix::$net_prefix in
    0::* | *::0 )
        aws_wildcard_mask=255.255.255.255
        azure_wildcard_mask=255.255.255.255 ;;
esac
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...