Suponiendo que está utilizando la bashversión 4.0 o posterior ...
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}
En el código, defino una matriz asociativa que contiene todos los nombres de dominio, cada uno asociado con una sola letra minúscula.
A la $PNvariable se le asigna el nombre de dominio correspondiente al valor en minúsculas $CODE(solo ${CODE,,}devuelve el valor $CODEconvertido en letras minúsculas) de esta matriz, pero si $CODEno corresponde a una entrada válida en la domainlista, sale del script con un error.
La ${variable:?error message}sustitución de parámetros se expandiría al valor de $variable(el dominio apropiado en el código) pero saldría del script con el mensaje de error si el valor está vacío no disponible. No obtiene exactamente el mismo formato del mensaje de error que en su código, pero esencialmente se comportaría igual si $CODEno es válido:
$ bash script.sh
script.sh: line 12: domain[${CODE,,}]: ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS
Si te importa el recuento de personajes, podemos acortar esto aún más:
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}
Además de eliminar nuevas líneas innecesarias, también he eliminado com.de cada dominio (esto se agrega en la asignación a PN).
Tenga en cuenta que todo el código anterior funcionaría incluso para un valor de varios caracteres en $CODE(si existieran claves en minúsculas para estos en la domainmatriz).
Si $CODEse tratara de un índice numérico (basado en cero), esto simplificaría un poco el 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}
Esto también facilitaría la lectura de la domainmatriz desde un archivo auxiliar que contiene una entrada por línea:
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
bashcódigo? ¿O tienes algún otro caparazón en mente?