Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

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.

> Lire le message (4 commentaires, moyenne: 2,3).  

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.

Bash et les remplacement de paramètres

Posté par JJD () le 19/07/2004 à 13:49. (lien). Évalué à 3.

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

Merci à tous

Posté par djano () le 20/07/2004 à 07:49. (lien). Évalué à 2.

Merci beaucoup !
Votre aide m'a été très utile, j'ai pu faire ce que je voulais grâce à vos indications.

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell