2017-09-05 6 views
0

私はこれらの要素でいっぱいの配列を持っています。引数で配列からBashを選択

vars=($bla=123 foo=456 bar=789) 

今、私はこれらを使用してIFS '=' このようにそれらを分割することができます。

for var in "${vars[@]}"; do 
    IFS='=' read -a split <<< ${vars} 
    nr=${split[1]} 
    title=${split[0]} 

完璧に動作します。

しかし、「foo」のようなスクリプトに引数を渡すことで、インスタンス項目foo = 456を選択できます。 'foo'は$ 2です。これはbashで可能ですか?私はこの方向で考えていた

"${vars[@]$2}" 

答えて

2

利用連想配列(bashのを必要とします4+):

#!/bin/bash 
bla=xyz 
declare -A vars=([$bla]=123 [foo]=456 [bar]=789) 

set -- one foo 
echo ${vars[$2]} 
+0

すごいです!私はCSVからこれを読んでいるので、私の既存の配列を連想配列に変換することは可能でしょうか?この方法で私は自分のCSVを少しきれいに保つことができます – volc

+0

@volc:自由に新しい質問をしてください。 – choroba