2017-09-05 9 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