Supondo que você esteja usando a bashversã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 $PNvariável é atribuído o nome de domínio correspondente ao encaixotado menor $CODEvalor ( ${CODE,,}retorna o valor de $CODEse transformou em letras minúsculas apenas) a partir desta matriz, mas se a $CODEnão corresponder a uma entrada válida na domainlista, 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 $CODEfor 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 domainmatriz).
Se $CODEfosse 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 domainmatriz 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}
bashcódigo? Ou você tem alguma outra concha em mente?