Comment insérer le paramètre looping au milieu d’une chaîne?

J’essaie d’utiliser un script bash pour accéder à plusieurs fichiers situés dans des répertoires différents. Les répertoires sont numérotés, mais les numéros apparaissent au milieu du nom du répertoire,

par exemple histogramme1data / histogramme2data /

Si j’utilise une boucle for pour lire ces répertoires, cela ne fonctionne pas:

#bash script for i in {1..100} do cd histogram$idata/ ......code........ cd .. done 

Entourez la variable avec des accolades comme suit:

 cd histogram${i}data 

Ce qui se passe dans votre code est que bash essaie d’interpréter la variable $idata , ce qui n’est évidemment pas ce que vous voulez.

Vous pouvez utiliser des accolades pour délimiter le nom du paramètre:

 cd "histogram${i}data/" 

Incidemment, je recommande d’envelopper le corps de votre boucle entre parenthèses afin qu’il soit exécuté dans un sous-shell. Cela facilite le suivi du répertoire en cours, car le cd n’aura d’effet qu’à l’intérieur du sous-shell. Alors:

 for i in {1..100} do ( cd "histogram${i}data/" ......code........ ) done 

script bash:

 for i in {1..100} do cd histogram${i}data/ ......code........ cd .. done