Giả sử bạn đang sử dụng bash
phiên bản 4.0 hoặc mới hơn ...
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}
Trong mã, tôi xác định một mảng kết hợp có chứa tất cả các tên miền, mỗi tên được liên kết với một chữ cái viết thường.
Các $PN
biến được gán tên miền tương ứng với giá thấp hơn-cased $CODE
giá trị ( ${CODE,,}
trả về giá trị của $CODE
biến thành chữ thường chỉ) từ mảng này, nhưng nếu $CODE
không thực hiện tương ứng với một mục hợp lệ trong domain
danh sách, nó ra khỏi kịch bản với một lỗi.
Việc ${variable:?error message}
thay thế tham số sẽ mở rộng thành giá trị của $variable
(tên miền thích hợp trong mã) nhưng sẽ thoát khỏi tập lệnh với thông báo lỗi nếu giá trị trống không có sẵn. Bạn không nhận được chính xác định dạng của thông báo lỗi như trong mã của mình, nhưng về cơ bản nó sẽ hoạt động giống như vậy nếu$CODE
không hợp lệ:
$ bash script.sh
script.sh: line 12: domain[${CODE,,}]: ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS
Nếu bạn quan tâm đến số lượng nhân vật, chúng ta có thể rút ngắn điều này hơn nữa:
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}
Ngoài việc xóa các dòng mới không cần thiết, tôi cũng đã xóa com.
khỏi mỗi tên miền (thay vào đó, nó được thêm vào trong bài tập PN
).
Lưu ý rằng tất cả các mã ở trên sẽ hoạt động ngay cả đối với một giá trị nhiều ký tự trong $CODE
(nếu các khóa có ký tự thấp hơn tồn tại cho các mã này trongdomain
mảng).
$CODE
Thay vào đó, nếu là một chỉ số bằng số (dựa trên số không), điều này sẽ đơn giản hóa mã một chút:
CODE=0
domain=( com.tencent.ig com.vng.pubgmobile com.pubg.krmobile com.rekoo.pubgm )
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
Điều này cũng sẽ giúp bạn thực sự dễ dàng đọc domain
mảng từ một tệp phụ trợ chứa một mục nhập trên mỗi dòng:
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
bash
mã? Hay bạn có bất kỳ vỏ khác trong tâm trí?