2017-09-05 3 views
0

J'ai un tableau rempli d'éléments comme ceux-ci;Sélection de tableau par argument

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

Maintenant, je peux les utiliser et de les partager avec IFS '=' comme ceci:

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

Ce qui fonctionne parfaitement.

Cependant, je veux être en mesure de sélectionner par exemple l'objet foo = 456 en passant un argument au script comme 'foo'. 'foo' serait 2 $. Est-ce possible en bash?

Je pensais dans ce sens:

"${vars[@]$2}" 

Répondre

2

Utiliser un tableau associatif (besoins bash 4+):

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

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

Impressionnant! Comme je lis ceci d'un CSV, serait-il possible de convertir mon tableau existant en un tableau associatif? De cette façon, je peux garder mon csv un peu plus propre pour ainsi dire – volc

+0

@volc: N'hésitez pas à poser une nouvelle question. – choroba