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
코드 라고 생각 합니까? 아니면 다른 껍질을 염두에두고 있습니까?