J'ai essayé de trouver la réponse sur ceci et d'autres forum. Ce qui suit est un script bash censé exécuter une séquence de commandes dans une boucle for. Je lis dans 2 colonnes d'un fichier. La première colonne a une liste de noms de fichiers (FARR) et la seconde un paramètre - un numéro (NARR) utilisé dans le traitement. Il exécutera l'ensemble des commandes pour chaque fichier dans FARR et utilisera le nom de fichier et le paramètre dans la commande commençant après "faire". Tout fonctionne comme prévu, sauf que $ {NARR [$ N]} n'ajoute pas le paramètre à la fin de la ligne. Le paramètre est vide à ce stade. L'utilisation de echo $ NARR affiche la liste complète. Donc, les données sont là ... Toute aide sera grandement appréciée.Passer la variable en tant qu'index au tableau de bash
#!/bin/bash
DIR='gauss_data/'
declare -i N=0
FARR=$(cat $DIR'all.dat' | awk '{if (NR!=1) print $1}')
NARR=$(cat $DIR'all.dat' | awk '{if (NR!=1) print $2}')
for f in $FARR;
do
./gauss_and_noise.py -i $DIR$f -o $DIR$f'.out' -d --save $DIR$f'.out.plot.png' --n0 ${NARR[$N]}
let "N++"
done
Vous semblez être familier avec Python. Je réécrirais ce script bash en Python si j'étais toi. – piokuc
** Astuce: ** Ajouter 'set -x' sous la ligne shebang est une aide précieuse pour le débogage des scripts [tag: bash]. – Johnsyweb
J'aurais pu le faire en python, mais je m'apprends à écrire des scripts bash et cela me semble être un bon candidat. –