Предполагая, что вы используете 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}
bash
код? Или ты имеешь в виду другую оболочку?