Script bash: accéder au dernier paramètre - Shell/Batch - Programmation
Marsh Posté le 30-12-2002 à 20:48:41
pour acceder au dernier paramètre : 
Tu connais la valeur de $# ... tu effectue autant de `shift` (boucle)pour le ramner en valeur de $1 ainsi, ton dernier paramètre sera le premier, ... les autres seront perdu par contre , dc utilise les bien avt de "shiter" 
Marsh Posté le 31-12-2002 à 15:59:50
| Giz a écrit : pour acceder au dernier paramètre :  | 
 
 
pour pas les perdre le plus simple c'est de faire une boucle 
 
for i until $# 
faire VAR$i=$# 
done 
 
var1= 1er parametre 
var2= 2eme 
... 
var3= 3eme 
 
et ce qlquesoit $# (le nombre de parametres) 
bon faut regarder comment faire (en syntaxe bash) mais l'idée est là. 
 
 
Marsh Posté le 10-12-2008 à 15:44:05
en utilisant la methode du shift, on peut s'en sortir en detruisant les parametres dans un sous-shell, on preserve ainsi les variables dans le scripts appelant: 
 
 
lastVar=`(while (test $# -gt 1) 
do 
shift 
done 
echo $1 
)` 
 
c'est un peu crado, mais ca fonctionne...
Marsh Posté le 03-01-2011 à 00:34:34
Il a beaucoup plus simple que tout ce qui précède ! 
Du moins depuis la version 2 de BASH... 
 
Pour récupérer le dernier paramètre de position, il suffit de stocker le nombre de paramètres dans une variable ; 
puis de récupérer le paramètre en utilisant ${n} ou n est la variable contenant le nombre de paramètre passée en référence indirecte à l'aide du point d'exclamation. 
 
En clair : 
 
|  # On récupère le nombre d'arguments passés à la commande  | 
 
Marsh Posté le 13-04-2013 à 16:47:46
Je tenais à préciser, même si le post est vieux de deux ans : 
dernierArg=${!#} fonctionne de la même façon, et non pas comme on aurait envie de le faire (cf dernière réponse) : dernierArg=${!$#} ou dernierArg=${!$nbArg}.
Marsh Posté le 29-12-2002 à 15:15:29
Salut tout le monde,
Je désire écrire un script bash tout bete qui va compresser un .flac avec oggenc comme si c'était un .wav. Ex:
_flacogg -q 5 fichier.flac
doit appeler
flac -c -d fichier.flac | oggenc -q 5 -o fichier.ogg -
Le script suivant fait ca, sauf que la syntaxe est:
_flacogg fichier.flac -q 5
... c'est à dire avec les options de oggenc après le nom du fichier.
_flacogg()
{
if [ $# -ge 1 ]
then
wav="$1"
base="${wav%*.wav}"
if [ ! -f "wab" ]
then
shift
echo flac -c -d "$wav" | oggenc $@ -o ${base}.ogg -
else
echo "File not found" $wav
fi
fi
}
Donc mon problème est tout bete: je dois récupérer le nom du fichier cible qui est en dernière position, et tous les autres paramètres je dois les passer à oggenc.
Y a peut-etre un moyen simple de le faire... Sinon je le ferai en python en trois coups de cuillère à pot :-)