Supondo que você esteja usando a bash
versão 4.0 ou mais recente ...
CODE=A
declare -A domain
domain=(
[a]=com.tencent.ig
[b]=com.vng.pubgmobile
[c]=com.pubg.krmobile
[d]=com.rekoo.pubgm
)
PN=${domain[${CODE,,}]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
No código, defino uma matriz associativa contendo todos os nomes de domínio, cada um associado a uma única letra minúscula.
A $PN
variável é atribuído o nome de domínio correspondente ao encaixotado menor $CODE
valor ( ${CODE,,}
retorna o valor de $CODE
se transformou em letras minúsculas apenas) a partir desta matriz, mas se a $CODE
não corresponder a uma entrada válida na domain
lista, ele sai do script com um erro.
A ${variable:?error message}
substituição do parâmetro seria expandida para o valor de $variable
(o domínio apropriado no código), mas sairia do script com a mensagem de erro se o valor estiver vazio não estiver disponível. Você não recebe exatamente a mesma formatação da mensagem de erro que no seu código, mas ela essencialmente se comportaria da mesma forma se $CODE
for inválida:
$ bash script.sh
script.sh: line 12: domain[${CODE,,}]: ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS
Se você se importa com a contagem de caracteres, podemos reduzir ainda mais isso:
CODE=A
declare -A domain=( [a]=tencent.ig [b]=vng.pubgmobile [c]=pubg.krmobile [d]=rekoo.pubgm )
PN=com.${domain[${CODE,,}]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
Além de excluir novas linhas desnecessárias, também removi com.
de cada domínio (isso foi adicionado na atribuição a PN
).
Observe que todo o código acima funcionaria mesmo para um valor de vários caracteres $CODE
(se existirem chaves de caixa baixa para elas na domain
matriz).
Se $CODE
fosse um índice numérico (baseado em zero), isso simplificaria um pouco o código:
CODE=0
domain=( com.tencent.ig com.vng.pubgmobile com.pubg.krmobile com.rekoo.pubgm )
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
Além disso, seria muito fácil ler a domain
matriz de um arquivo auxiliar contendo uma entrada por linha:
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
bash
código? Ou você tem alguma outra concha em mente?