Retourner aux forums || Retourner au forum Programmation.shell
Programmation.shell : Bash : Verification de la syntaxe d'un argument
Posté par djano () le 19 juillet 2004
L'exécution du script bash que je suis en train de faire doit être de la forme:
./script fichier.truc
et je voudrais vérifier que l'argument est de la forme :
nom de base, un point et une extension.
Dans mon exemple, je veux donc séparer "fichier.truc" en : "fichier", "." et "truc".
Si vous avez des suggestions...
merci.
./script fichier.truc
et je voudrais vérifier que l'argument est de la forme :
nom de base, un point et une extension.
Dans mon exemple, je veux donc séparer "fichier.truc" en : "fichier", "." et "truc".
Si vous avez des suggestions...
merci.
> Lire le message (4 commentaires, moyenne: 2,3).
Bash et les remplacement de paramètres
Posté par
JJD () le 19/07/2004 à 13:49. (lien). Évalué à 3.
Quelque chose comme ça devrait fonctionner :
Si $arg contient l'argument à tester,
${arg%.*} renvoie la chaîne $arg sans la dernière extension (ou toute la chaîne si'il n'y a pas de point)${arg#*.} renvoie $arg en supprimant tout ce qui précède le premier point (ou toute la chaîne s'il n'y a pas de point).Quelque chose comme ça devrait fonctionner :
if [ $arg != ${arg%.*}.${arg#*.} ]
then
echo "Mauvais argument : $arg"
exit 1
fi
-
[^]Re: Bash et les remplacement de paramètres
Posté par tgl () le 19/07/2004 à 16:34. (lien). Évalué à 3.Si on veut autoriser les "." dans les noms de fichier (et ne considérer comme extension que ce qui est après le dernier), il vaut mieux utiliser "${foo%.*}.${foo##*.}". Perso j'utiliserais aussi des double-quotes un peu partout, en cas de nom de fichiers avec des espaces. Bref en résumé :
if [ "${arg}" != "${arg%.*}.${arg##*.}" ]
IFS et set
Posté par
Philippe Martin () le 20/07/2004 à 06:42. (lien). Évalué à 1.
Tu peux utiliser la variable IFS et la commande set :
arg=$1
IFS=.
set $arg
echo fichier : $1
echo truc : $2
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.