2017-10-19 18 views
0

comment assigner à une variable Bash un élément de tableau tel que le tableau est l'indice lui-même par une variable (une chose la plus triviale dans toutes les langues, mais semble spécial bash?)variables d'utilisation Bash comme index de tableau

J'ai essayé plusieurs variantes telles que:

let temp1=list1[list1Index] 

ou

temp1=${list1[$list1Index]} 

aucun d'entre eux travaillent évidemment. Pas d'erreur mais rien n'est affiché par echo $ temp1 Que puis-je faire?

ici est le code complet (avec des noms fictifs pour les chemins):

#! /bin/bash 
pathFrontalGray='/mnt/c/Users/dummyName/' 

list1=('x' 'y' 'z' 'a' 'b' 'c') 
prefix1='dummyName' 
echo $pathFrontalGray 
touch fileNamesGray.txt 
ls $pathFrontalGray > fileNamesGray.txt 
fileGray='fileNamesGray.txt' 
list1Index=0 
i=0 
while IFS= read -r line 
do 
    let i=i+1 
    echo $i 
    #means if NOT divisibe by 9 -> if <expr evaluated to 0> -> equiv if false 
    if (($i % 9));then 
     let list1Index=list1Index+1 
    fi 

    temp1=$list1[$((list1Index))] 
    echo $temp1 
    #mv $pathFrontalGray$line $prefix1${list1[$list1Index]} 
    # display $line or do somthing with $line 
    #printf '%s\n' "$line" 
done <"$fileGray" 
+0

'$ array [$ ((index))]'? – daniu

+2

Votre deuxième approche, '" $ {arr [$ idx]} "', devrait fonctionner. Montrez-nous votre tableau. – randomir

+1

'list1 [list1Index]' fonctionne aussi bien, si c'est un tableau non-associatif et 'list1Index' le nom de est une variable contenant un entier comme valeur. C'est-à-dire - (1) non, ce n'est pas "évident", et (2) nous avons vraiment besoin d'un [mcve] inclus dans la question pour que d'autres puissent reproduire le comportement revendiqué. –

Répondre

0

J'ai trouvé le problème. Je suis désolé en fait

curr1=${list1[index1]} 

fonctionne très bien. Le problème était que l'écho de cela s'est perdu dans beaucoup d'autres choses affichées. Désolé pour le dérangement. Je devine que j'étais un peu fatigué ...