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