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リストには、ANとスクリプトを出エラー。
${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行ごとに1つのエントリを含む補助ファイルから配列を非常に簡単に読み取ることができます。
CODE=0
readarray -t domain <domains.txt
PN=${domain[CODE]:?ERROR! CODE KOSONG, MELAKUKAN EXIT OTOMATIS}
bashコードだと思う?または、他のシェルを考えていますか?