Un peu d'Unix
Je cherche désespérément la solution à ce problème :
Dans un script shell, je crée une boucle qui doit me produire une liste, laquelle est mémorisée dans une variable. Au sortir de la boucle, la variable est vide. Pourquoi ? Comment récupérer ma liste ? Voici le script :
Si vous avez des lumières, merci de m'en faire part...
Dans un script shell, je crée une boucle qui doit me produire une liste, laquelle est mémorisée dans une variable. Au sortir de la boucle, la variable est vide. Pourquoi ? Comment récupérer ma liste ? Voici le script :
#!/bin/sh
res=$(ls -l *jpg)
i=0
echo "$res" | while read line
do
i=`expr $i + 1`
test=`expr $i % 2`
if [ $test -eq 0 ] ; then
newline=$(echo "$line" paire)
else
newline=$(echo "$line" impaire)
fi
liste="$liste $newline"
done
echo "Nouvelle liste : $liste"
exit 0
Si vous avez des lumières, merci de m'en faire part...
6 Commentaires:
Pour ton probleme d'unix j'ai une piste mais ca n'a peut-etre rien a voir.
Il se trouve que j'ai eu a coder un shell recemment et j'ai eu presque le meme probleme que toi: c'etait du au fait que je gardais uniquement les pointeurs sur les commandes et non pas les commandes elles-memes. Et etant donné que le pointeur est declaré localement, le lien disparait a la sortie du bloc... (je sais pas si je suis tres clair).
La soluion: utiliser strcpy pour copier le contenu de la variable
Merci Chams. Mais j'ai peur que strcpy ne puisse être utilisé que dans un programme C et non sous forme de commande dans un shell script... Je continue à chercher. Au moins, grâce à toi, je dispose d'une piste. Encore merci.
Il faut "incorporer" l'opération dans la variable :
liste=`echo "$res" | while read line
do
# (... ici le coeur de la boucle...)
echo $newline
done`
echo "Nouvelle liste : $liste"
Et voilà. Ne pas oublier les "backquotes".
Chris
Merci Chris, c'est exactement la solution que je cherchais. A vrai dire, j'aurais pu y penser, mais je n'imaginais pas qu'on pouvait incorporer un bloc entier de commandes dans une variable (procédé assez étrange, il me semble)... Merci encore.
Bonjour
J' ai peur que ton script ne soit pas codé dans le bon language. Ne serait il pas plutot codé en c ou en c++. Je ne suis pas un programmeur très aaverti au niveua du c et du c++ mais la syntaxe m' a tous l' aire d' etre du c.
Cordialement
Nathaniel Bensaid
nathbensaid@hotmail.com
Pas de problème, Nathaniel. Ça ressemble à du C, mais c'est bien un shell script, comme l'atteste d'ailleurs la mention #!/bin/sh au début. Merci quand même. En fait, Chris m'a fourni la solution, et maintenant ce script fonctionne très bien.
Réagir
| Masquer les commentaires