Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Script BASH gestion des espaces des noms de fichier

1 view
Skip to first unread message

Basile Starynkevitch

unread,
Feb 2, 2024, 2:50:05 AMFeb 2
to

On 2/2/24 08:41, Informatique BILLARD wrote:
>
> Bonjour
>
> j'ai écrit un petit script qui lance à la fin cette commande :
>
> pdftk $fichier1 stamp $tampon output $fichier2
>
> avec $fichier1 et $tampon, $fichier2  sont construit à partir des
> paramètres fournis au script .
>
> Mais je rencontre un problème quand il y a un espace dans le nom de
> fichier ou le répertoire pour pdftk ces espaces engendrent une erreur.
>
> J'ai pourtant placé l’antislash avant mes espace dans l'affectation
> des variables.
>
> tampon=/user/Document/cachet*\ *pdf
>
Une solution simple c'est de s'interdire les espaces dans les noms de
fichiers. Pourquoi ne pas coder par exemple

tampon=/user/Document/cachet.pdf

et ensuite lancer votre script avec /bin/bash -vx lescriptbash

> Merci par avance
>
> François-Marie
>
--
Basile Starynkevitch <bas...@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/
See/voir: https://github.com/RefPerSys/RefPerSys

Informatique BILLARD

unread,
Feb 2, 2024, 2:50:05 AMFeb 2
to

Bonjour

j'ai écrit un petit script qui lance à la fin cette commande :

pdftk $fichier1 stamp $tampon output $fichier2

avec $fichier1 et $tampon, $fichier2  sont construit à partir des paramètres fournis au script .

Mais je rencontre un problème quand il y a un espace dans le nom de fichier ou le répertoire pour pdftk ces espaces engendrent une erreur.

J'ai pourtant placé l’antislash avant mes espace dans l'affectation des variables.

tampon=/user/Document/cachet\ pdf

Merci par avance

François-Marie

Jérémy Prego

unread,
Feb 2, 2024, 3:00:06 AMFeb 2
to
bonjour,


Le 02/02/2024 à 08:41, Informatique BILLARD a écrit :

Bonjour

j'ai écrit un petit script qui lance à la fin cette commande :

pdftk $fichier1 stamp $tampon output $fichier2


Pour éviter ce problème, on peut mettre les variables entre "

du coup, ça donnerai:

pdftk "$fichier1" stamp "$tampon" output "$fichier2"

avec $fichier1 et $tampon, $fichier2  sont construit à partir des paramètres fournis au script .

Mais je rencontre un problème quand il y a un espace dans le nom de fichier ou le répertoire pour pdftk ces espaces engendrent une erreur.

J'ai pourtant placé l’antislash avant mes espace dans l'affectation des variables.

tampon=/user/Document/cachet\ pdf

Merci par avance

François-Marie


Jerem

Cyrille

unread,
Feb 2, 2024, 3:10:05 AMFeb 2
to
Bjr,

> tampon=/user/Document/cachet\ pdf
et
tampon="/user/Document/cachet\ pdf"
(utiliser des double quote

??

++

Informatique BILLARD

unread,
Feb 2, 2024, 3:20:04 AMFeb 2
to

Bonjour

j'ai écrit un petit script qui lance à la fin cette commande :

pdftk $fichier1 stamp $tampon output $fichier2

avec $fichier1 et $tampon, $fichier2  sont construit à partir des paramètres fournis au script .

Mais je rencontre un problème quand il y a un espace dans le nom de fichier ou le répertoire pour pdftk ces espaces engendrent une erreur.

J'ai pourtant placé l'antislah avant mes espace dans l'affectation des variables.

Informatique BILLARD

unread,
Feb 2, 2024, 3:50:04 AMFeb 2
to
Le 02/02/2024 à 08:48, Basile Starynkevitch a écrit :
>
> On 2/2/24 08:41, Informatique BILLARD wrote:
>>
>> Bonjour
>>
>> j'ai écrit un petit script qui lance à la fin cette commande :
>>
>> pdftk $fichier1 stamp $tampon output $fichier2
>>
>> avec $fichier1 et $tampon, $fichier2  sont construit à partir des
>> paramètres fournis au script .
>>
>> Mais je rencontre un problème quand il y a un espace dans le nom de
>> fichier ou le répertoire pour pdftk ces espaces engendrent une erreur.
>>
>> J'ai pourtant placé l’antislash avant mes espace dans l'affectation
>> des variables.
>>
>> tampon=/user/Document/cachet*\ *pdf
>>
> Une solution simple c'est de s'interdire les espaces dans les noms de
> fichiers. Pourquoi ne pas coder par exemple
>> Oui en effet j'ai fini par supprimer les espaces dans les noms de
>> fichiers et répertoires. Cependant ce script traite des fichiers
>> ayant parfois des espaces et si je dois renommer à chaque fois je
>> vais perdre l'intérêt du script.

Klaus Becker

unread,
Feb 2, 2024, 4:00:04 AMFeb 2
to
Detox est ton ami

Klaus

Informatique BILLARD

unread,
Feb 2, 2024, 4:20:04 AMFeb 2
to

Bon

j'ai tourné le problème dans tous les sens et finalement j'ai opté pour ceci

  1. le nom du fichier passé comme argument au script est traité pour remplacer les espaces par des underscore.
  2. je fait un renommage de ce fichier avec le nom sans espaces.
  3. Puis traitement et tout fonctionne.

Merci à vous.

François-Marie

Informatique BILLARD

unread,
Feb 2, 2024, 4:20:04 AMFeb 2
to

merci je ne connaissais pas cet outils

François-Marie

Erwann Le Bras

unread,
Feb 2, 2024, 5:50:04 AMFeb 2
to

bonjour

comme dis par ailleurs, pas de problème avec les espaces si les variables et chemins sont bien protégés  avec des doubles-cotes (["])

fichier="mon fichier"
dir="$HOME/mon répertoire"
cp "$fichier" "$dir"

Éviter les boucles "for" avec listes de fichiers (for f in `ls "$dir"`) ou (for f in *), les espaces sont mal interprétés.
À la place utiliser "find" : find "$dir" -name "${fichier}*" -exec

c'est à peu près tout.

Erwann

Le 02/02/2024 à 08:41, Informatique BILLARD a écrit :

François TOURDE

unread,
Feb 2, 2024, 7:30:04 AMFeb 2
to
Le 19755ième jour après Epoch,
Erwann Le Bras écrivait:

> Éviter les boucles "for" avec listes de fichiers (for f in `ls
> "$dir"`) ou (for f in *), les espaces sont mal interprétés.

Ça marche très bien l'utilisation avec for f in *, si tu prends soin
d'utiliser "$f" plutôt que juste $f

Par contre, le "in `ls *`" n'est effectivement pas une bonne idée.

Erwann Le Bras

unread,
Feb 2, 2024, 10:00:06 AMFeb 2
to

Effectivement François

Merci d'avoir rectifié.

Erwann

Pierre Malard

unread,
Feb 2, 2024, 4:20:05 PMFeb 2
to
Essaie des cotes dans tes attributions de noms.

Par exemple :
TOTO="${NomFic}"

avec
NomFic="Mon Fichier"

Pareillement cote les appels :
Cmd —variable "${NomFic}"

Par exemple. Le fait de coter l’appel de variable avec des double cote permet à BASH de considérer NomFic comme un seul paramètre envoyé à Cmd avec ses blancs. Après il faut savoir comment la commande Cmd va traiter tout ça…
-- 
Pierre Malard
Responsable architectures système CDS DINAMIS/THEIA Montpellier
IRD - UMR Espace-Dev - UAR CPST - IR Data-Terra
Maison de la Télédétection
500 rue Jean-François Breton
34093 Montpellier Cx 5
France

   « SPAM : Spieced Pork and Meat »
                                       Pierre Dac (Londres, 1944)
Extrait de « Pierre DAC parle au Français » sur Radio Londres, le 24 mars 1944, dans Drôle de guerre, éditions Omnibus (2008), pages 93 à 96. (https://www.epi.asso.fr/revue/articles/a1602d.htm)

   |\      _,,,---,,_
   /,`.-'`'    -.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)   πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ (  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

signature.asc

Daniel Caillibaud

unread,
Feb 5, 2024, 10:10:05 AMFeb 5
to
Le 02/02/24 à 08:54, Jérémy Prego <jeremy...@jeremyp3.fr> a écrit :
> Pour éviter ce problème, on peut mettre les variables entre "
>
> du coup, ça donnerai:
>
> pdftk "$fichier1" stamp "$tampon" output "$fichier2"

Oui, et je vous encourage à passer vos shell bash à shellcheck, il signale ce genre d'erreur
(et plein d'autres).
Il est parfois un peut trop zélé, mais on peut lui dire qu'on sait ce qu'on fait avec du

# shellcheck disable=SCxxxx

avant la ligne qui le fait râler (où xxxx est le code d'erreur qu'il signale)

--
Daniel

La pensée vole et les mots vont à pied. Voilà tout le drame de l'écrivain.
Julien Green

Sébastien NOBILI

unread,
Feb 5, 2024, 11:10:05 AMFeb 5
to
Bonjour,

Le 2024-02-05 16:07, Daniel Caillibaud a écrit :
> Oui, et je vous encourage à passer vos shell bash à shellcheck, il
> signale ce genre d'erreur
> (et plein d'autres).
> Il est parfois un peut trop zélé, mais on peut lui dire qu'on sait ce
> qu'on fait avec du
>
> # shellcheck disable=SCxxxx
>
> avant la ligne qui le fait râler (où xxxx est le code d'erreur qu'il
> signale)

Avec Neovim, on peut avoir ce genre d'assistance en direct :)

Sébastien
0 new messages