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