Bonjour,
Je suis confronté à un petit problème : j’aimerai qu’à chaque tour d’une boucle while je puisse afficher le nième argument passé à la fonction courante.
J’y arrive mais c’est pas très compréhensible et donc c’est un nid à bugs :
[code]#!/bin/sh
echo_each() {
i=1
while [ $i -le $# ]; do
eval name=$$i
echo $name
i=expr $i + 1
done
}
echo_each “ab cd” “ef ghi” jkl ‘mno p q’[/code]
ou encore :
[code]#!/bin/sh
echo_each() {
i=1
while [ $i -le $# ]; do
name=eval echo '${'${i}'}'
echo $name
i=expr $i + 1
done
}
echo_each “ab cd” “ef ghi” jkl ‘mno p q’[/code]
On pourrait y arriver plus facilement, avec “for i in $@” mais j’ai besoin d’un contrôle plus fin que ça. Dans ce que je veux faire, j’ai besoin de cette boucle pour les arguments 2 à 5 puis 7 à 11, par exemple.
Quelqu’un connait une construction plus simple ?