Dengan asumsi Anda menggunakan bashrilis 4.0 atau lebih baru ...
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}
Dalam kode tersebut, saya mendefinisikan array asosiatif yang berisi semua nama domain, masing-masing terkait dengan satu huruf kecil.
The $PNvariabel ditugaskan nama domain yang sesuai dengan rendah-cased $CODEnilai ( ${CODE,,}return nilai $CODEberubah menjadi huruf kecil saja) dari array ini, tetapi jika $CODEtidak sesuai dengan entri yang valid dalam domaindaftar, ia keluar script dengan kesalahan.
The ${variable:?error message}substitusi parameter akan memperluas untuk nilai $variable(domain yang sesuai dalam kode) tapi akan keluar script dengan pesan kesalahan jika nilai kosong tidak tersedia. Anda tidak mendapatkan format pesan kesalahan yang sama persis seperti dalam kode Anda, tetapi pada dasarnya akan berperilaku sama jika $CODEtidak valid:
$ bash script.sh
script.sh: line 12: domain[${CODE,,}]: ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS
Jika Anda peduli dengan jumlah karakter, kami dapat mempersingkat ini lebih lanjut:
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}
Selain menghapus baris baru yang tidak perlu, saya juga menghapus com.dari setiap domain (ini malah ditambahkan dalam penugasan ke PN).
Perhatikan bahwa semua kode di atas akan berfungsi bahkan untuk nilai multi-karakter di $CODE(jika ada kunci yang lebih rendah untuk ini dalam domainarray).
Jika $CODEbukan indeks numerik (berbasis nol), ini akan menyederhanakan kode sedikit:
CODE=0
domain=( com.tencent.ig com.vng.pubgmobile com.pubg.krmobile com.rekoo.pubgm )
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
Ini juga akan membuatnya sangat mudah untuk membaca domainarray dari file tambahan yang mengandung satu entri per baris:
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
bashkode? Atau apakah Anda memiliki shell lain dalam pikiran?