Angenommen, Sie verwenden bash
Release 4.0 oder neuer ...
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}
Im Code definiere ich ein assoziatives Array, das alle Domänennamen enthält, die jeweils einem einzelnen Kleinbuchstabenschlüssel zugeordnet sind.
Der $PN
Variablen wird der Domänenname zugewiesen, der dem Wert in Kleinbuchstaben $CODE
entspricht ( ${CODE,,}
gibt nur den Wert $CODE
in Kleinbuchstaben zurück). Wenn der Name $CODE
jedoch keinem gültigen Eintrag in der domain
Liste entspricht, wird das Skript mit einem beendet Error.
Die ${variable:?error message}
Parametersubstitution würde auf den Wert von $variable
(die entsprechende Domäne im Code) erweitert, das Skript jedoch mit der Fehlermeldung verlassen, wenn der Wert leer ist, nicht verfügbar. Sie erhalten nicht genau die gleiche Formatierung der Fehlermeldung wie in Ihrem Code, sie verhält sich jedoch im Wesentlichen genauso, wenn sie $CODE
ungültig ist:
$ bash script.sh
script.sh: line 12: domain[${CODE,,}]: ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS
Wenn Sie sich für die Anzahl der Zeichen interessieren, können wir dies weiter verkürzen:
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}
Abgesehen vom Löschen unnötiger Zeilenumbrüche habe ich auch com.
jede Domain entfernt (dies wird stattdessen in der Zuordnung zu hinzugefügt PN
).
Beachten Sie, dass der gesamte obige Code auch für einen aus mehreren Zeichen bestehenden Wert in $CODE
(sofern für diese im domain
Array Schlüssel mit geringerem Gehäuse vorhanden sind) funktionieren würde .
Wenn $CODE
es sich stattdessen um einen numerischen (nullbasierten) Index handeln würde, würde dies den Code etwas vereinfachen:
CODE=0
domain=( com.tencent.ig com.vng.pubgmobile com.pubg.krmobile com.rekoo.pubgm )
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
Dies würde es zusätzlich sehr einfach machen, das domain
Array aus einer Hilfsdatei zu lesen, die einen Eintrag pro Zeile enthält:
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
bash
Code? Oder hast du eine andere Hülle im Sinn?