Evaluation des parametres de ligne de commande - Script

Evaluation des parametres de ligne de commande - Script - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 02-09-2003 à 13:11:47    

Salut,
 
J'ai un tout petit soucis pour ecrire un script, et je n'arrive pas a trouver ce que je veux sur le net pour m'aider. Voila le probleme:
 
Je voudrais faire une boucle de tous les arguments passes en ligne de commande, et evaluer ceux-ci:
 
for (( i = 1; i <= $#; i++ ))
do
# exemple qui ne marche pas pour avoir la valeur de $1, $2, etc
echo "$$i"
done
 
En fait, je suppose que la solution se trouve autour de la syntaxe de $$i mais j'ai essaye differentes solutions, mais sans succes (y compris utiliser des eval et expr ).
 
La solution doit etre simple, mais [:spamafote]
 
Merci d'avance :jap:

Reply

Marsh Posté le 02-09-2003 à 13:11:47   

Reply

Marsh Posté le 02-09-2003 à 13:45:51    

for i in $*
 do  
  echo $i;
 done;
 
ou alors avec shift
http://www.shellunix.com/sh.html

Reply

Marsh Posté le 02-09-2003 à 14:33:21    

Merci....mais ca ne correspond pas tout a fait avec ce que je veux faire.
 
En fait, mon script aura un nombre variable d'arguments qui pourra etre nul. S'il est effectivement nul, je vais executer la commande sur toute la liste. Sinon, sur la liste en ligne de commande uniquement. Exemple:
 
(elements existant de 0 a 9)
list 1 4 6 => execute la commande sur les elements 1, 4 et 6
list       => execute la commande sur les elements 0 a 9
 
sachant qu'en plus les arguments pourront etre soit des chiffres, soit des strings, que dans tous les cas je devrais interpreter en une string connue.
 
C'est pour ca que je voulais faire un truc du genre
 
if [ -z $1 ]
then
max=10
else
max=`expr $#`
fi
 
for (( i = 0; i < $max; i++ ))
do
 
if [ -z $1 ]
then
arg=$i
else
arg=$$i    # en fait je veux avoir les arguments $1 a $# max
fi
 
case $arg in
  "0" ) command="str0";;
  "string_0" )  command="str0";;  # 0 et string_0 sont equivalents
  # etc
  *) exit 1;;
esac
 
done
 
echo "cd $command">>fichier.txt
 
 
C'est pour avoir un traitement commun plutot que de faire une boucle for ((i=0;i<$#;i++)) et une autre boucle for $i in $*
 
C'est possible ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed