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 :-)