Probleme deu commande dirname

Résolu/Fermé
redanovich - 25 oct. 2010 à 09:02
 redanovich - 25 oct. 2010 à 10:45
Bonjour,

suite a mon poste https://forums.commentcamarche.net/forum/affich-19547810-decouper-une-chaine-de-caractere jai remarquer que ça ne fonctionne pas correctement s'il y a un espace dans le chemain: exemple:

$ cat plop
./1111/22222/33333/fichier.ext
./1111/22222/33333/4444444/555 555/666666/fichier.ext

$ cat foo.sh
#! /bin/bash

while read line
do
LINE=$(dirname ${line})
echo "Chemin = ${LINE%/*}"
echo "Répertoire = ${LINE##*/}"
done < plop

$ ./foo.sh
Chemin = ./1111/22222
Répertoire = 33333
Chemin = ./1111/22222/33333
Répertoire = 4444444


// alors que normalement le résultat doit être
// Chemin = ./1111/22222/33333/4444444/555 555
// Répertoire = 666666

$

est ce que quelqu'un a la gentillesse de m'aider a résoudre ce probleme.
merci d'avance

A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
25 oct. 2010 à 09:21
Salut,

Rajoute des quotes autour de la variable "${line}" :

#! /bin/bash

while read line
do
        LINE=$(dirname "${line}")
        echo "Chemin = ${LINE%/*}"
        echo "Répertoire = ${LINE##*/}"
done < plop

;-))
0
çççççççaaaaaa mmmmaaaarche, nickel
merci bien
0