Если вы используете bash
выпуск 4.0 или новее...
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}
В коде я определяю ассоциативный массив, содержащий все доменные имена, каждое из которых связано с одной буквой нижнего -регистра.
Переменной $PN
присваивается доменное имя, соответствующее нижнему -прописному $CODE
значению(${CODE,,}
возвращает значение $CODE
, переведенное в строчные буквы только )из этого массива, но если $CODE
не соответствует действительной записи в списке domain
, он завершает работу сценария с ошибкой.
Подстановка параметра ${variable:?error message}
будет расширяться до значения$variable
(соответствующего домена в коде ), но приведет к выходу из сценария с сообщением об ошибке, если значение пусто и недоступно. Вы не получите точно такой же формат сообщения об ошибке, как в вашем коде, но по существу он будет вести себя так же, если $CODE
недействителен:
$ bash script.sh
script.sh: line 12: domain[${CODE,,}]: ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS
Если вам небезразлично количество символов, мы можем еще больше сократить:
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}
Помимо удаления ненужных новых строк, я также удалил com.
из каждого домена (, вместо этого он добавлен в назначение дляPN
).
Обратите внимание, что весь приведенный выше код будет работать даже для многозначного -символьного значения в $CODE
(, если для них существуют ключи в нижнем регистре -в массиве domain
).
Если бы $CODE
был числовым (нулевым -основанным )индексом,это немного упростило бы код:
CODE=0
domain=( com.tencent.ig com.vng.pubgmobile com.pubg.krmobile com.rekoo.pubgm )
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
Это дополнительно упростило бы чтение массива domain
из вспомогательного файла, содержащего по одной записи в строке:
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}