Salut à tous
J'ai un dilemme concernant les espaces sous shell . En faite , mon objectif est de faire un traitement pour les espaces présent dans les noms de fichiers. Ceci permettrait entre autre d'exécuter ce fichier via un autre programme car comme vous le savez , les noms avec espaces sont illisible sous unix.
Du coup , j'ai fait pas pas mal de test sur les chaines de noms de fichiers avec des variables shell mais sans succès.
En effet dans le cas , d'un fichier qui s'appelle "un test.pdf" , j'ai utilisé 3 variables.
"$ a=un
$ b=\ test.pdf
"$ c=$a$b
$ echo $c
> un test.pdf
et là ou ça foire c'est là :
$ mv $c a.pdf
> mv : la cible `a.pdf` n'est pas un repertoire
ensuite par curiosité , je lui ai mis un repertoire :
$ mv $c ../
> mv: ne peut pas evaluer `un' : Aucun fichier ou dossier de ce type
mv: ne peut pas evaluer `test' : Aucun fichier ou dossier de ce type
Le système ne voit pas la chaine de caractère $c comme une seule chaine mais comme 2 chaines distinctes. J'ai fait le test avec un fichier se nommant "un" et j'ai effectué la commande "mv $c" et la fonction a renommé le fichier "un" en "test.pdf".
Partager