Bonsoir
Le 09/10/2011 21:28, Thomas Arnoux a écrit :
> Le 9 octobre 2011 21:17, <vincent+ml.guilde@???> a écrit :
>> Utiliser plutôt quelque chose de la forme :
>> for file in *
>> do
>> echo "$file"
>> blabla
>> done
>>
>> le for va découper proprement au niveau en conservant le snoms de
>> fichiers contenant des espaces, des caractères spéciaux…
>
> En fait, mon problème n'était pas directement celui que j'ai posé
> (mais la solution était bien celle qui m'a été avancée), c'est
> pourquoi je n'avais pas forcément vu ce problème (et que j'ai donné
> l'exemple avec un seul fichier dans le dossier listé).
> Dans mon problème, j'ai un script qui se lance avec une variable qui
> m'est donnée et qui contient un nom de dossier ou de fichier (avec
> parfois des espaces).
Tout dépend de comment ton script est lancé :
- cas 1:
le_script.sh "nom de fichier.txt"
le_script.sh 'nom de repertoire'
Dans ce cas, comme tu "protèges" les espaces par des guillemets simples
ou double, alors la variable "$1" de "le_script.sh" lira bien le
paramètre (unique), et retrouvera alors son "nom de xxxx". Il n'y aura
d'ailleurs pas du tout de $2 .
- cas 2:
tu tapes
le_script.sh nom
et tu utilises l'auto-compression (la touche "tab"). Ton shell va alors
afficher ceci :
le_script.sh nom\ de\ fichier.txt
Si tu appuies sur la touche "enter", le programme va s'exécuter comme
dans le cas 1, et $1 recevra l'unique paramètre (nom de fichier.txt).
Note: Tu peux taper toi-même "le_script.sh nom\ de\ fichier.txt", cela
marche aussi très bien. C'est simplement plus "pénible" à taper sur un
clavier FR, vu la position du \
- cas 3:
le_script.sh nom de fichier.txt
Rien ne va plus. "le_script.sh" va recevoir non pas 1, mais 3 paramètres :
$1=nom
$2=de
$3=fichier.txt
Conclusion : C'est au lancement du programme "le_script.sh" qu'il faut
faire attention, et bien mettre les guillemets (ou les \"
Cordialement,
Olivier
--
~~~~~~~ _____/\_____ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix / _ \/ _ \ Olivier Allard-Jacquin
/ / \ / \ \ Web: http://olivieraj.free.fr/
/___/ / \ \___\ Mail: olivieraj@???
~~~~ ///// ///\\\ \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!