Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1531 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Script bash: accéder au dernier paramètre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script bash: accéder au dernier paramètre

n°277125
kenshiro18​2
Posté le 29-12-2002 à 15:15:29  profilanswer
 

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

mood
Publicité
Posté le 29-12-2002 à 15:15:29  profilanswer
 

n°277679
Giz
Posté le 30-12-2002 à 20:48:41  profilanswer
 

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" ;)


Message édité par Giz le 30-12-2002 à 20:49:07
n°277846
kuroineko
je mamgerais bien un truc la..
Posté le 31-12-2002 à 15:59:50  profilanswer
 

Giz a écrit :

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" ;)


 
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à.
 
 


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
n°1824977
akiuni
Posté le 10-12-2008 à 15:44:05  profilanswer
 

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...

n°2045724
ambellianc​e
Posté le 03-01-2011 à 00:34:34  profilanswer
 

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
NbArguments=$#
 
# On récupère la valeur dernier argument grâce à ${}  
# et une référence indirecte sur le nombre d'argument
DernierArgument=${!NbArguments}
 
# Nous pouvons à présent afficher le dernier argument
echo "$DernierArgument"


n°2185750
blkcm
Posté le 13-04-2013 à 16:47:46  profilanswer
 

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}.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Script bash: accéder au dernier paramètre

 

Sujets relatifs
Script = obliger l'utilisateur à voir son site avec SA taille de fontAppeler un script PHP avec parametre depuis un lien HTML
[PHP et SQL] passage de variable en parametreexecution d'un script sql dans vb
comment appeler un script à heure pré-programmée?Automatiser un script php
[Servlet] Récupérer un paramètre avec a hrefscript shell utilisant "su"
[SQL SERVER] Paramètre dans un DTS 
Plus de sujets relatifs à : Script bash: accéder au dernier paramètre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR