Dengan asumsi Anda menggunakan bash
rilis 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 $PN
variabel ditugaskan nama domain yang sesuai dengan rendah-cased $CODE
nilai ( ${CODE,,}
return nilai $CODE
berubah menjadi huruf kecil saja) dari array ini, tetapi jika $CODE
tidak sesuai dengan entri yang valid dalam domain
daftar, 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 $CODE
tidak 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 domain
array).
Jika $CODE
bukan 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 domain
array 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}
bash
kode? Atau apakah Anda memiliki shell lain dalam pikiran?