Bash et espacements

Le
Olivier V
Bonjour,

J'ai un script bash permettant d'extraire des pages d'un pages d'un pdf
(le script complet fait d'autres choses, mais j'ai extrait le problème ).
Or il n'accepte pas les arguments avec espaces.

Le script :
#!/bin/bash
# $1 : document pdf
# $2 : pages à extraire sous la forme 1-7 10 par exemple pour extraire
les pages 1 à 7 ET 10
pdftk "$1" cat "$2" output "${1%.pdf}_extrait.pdf"

Ceci fonctionne pour extraire les pages 1 à 5
./script document.pdf 1-5

Mais pas ceci pour les pages 1 et 5 :
./script document.pdf 1 5

Alors que la commande suivante ,elle, fonctionne :
pdftk document.pdf cat 1 5 output sortie.pdf

Comment modifier mon script ?

Merci.

Olivier V
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe Weill
Le #26428304
Le 09/03/2017 à 12:39, Olivier V a écrit :
Bonjour,
J'ai un script bash permettant d'extraire des pages d'un pages d'un pdf (le script complet fait d'autres choses, mais j'ai extrait
le problème ...).
Or il n'accepte pas les arguments avec espaces.
Le script :
#!/bin/bash
# $1 : document pdf
# $2 : pages à extraire sous la forme 1-7 10 par exemple pour extraire les pages 1 à 7 ET 10
pdftk "$1" cat "$2" output "${1%.pdf}_extrait.pdf"
Ceci fonctionne pour extraire les pages 1 à 5
./script document.pdf 1-5
Mais pas ceci pour les pages 1 et 5 :
./script document.pdf 1 5
Alors que la commande suivante ,elle, fonctionne :
pdftk document.pdf cat 1 5 output sortie.pdf
Comment modifier mon script ?

normal dans ce cas là tu as trois arguments
./script document.pdf "1 5"
Merci.
Olivier V
Olivier V
Le #26428303
Le 09/03/2017 à 13:34, Philippe Weill a écrit :
normal dans ce cas là tu as trois arguments
./script document.pdf "1 5"

Merci mais j'avais déjà testé ça et cela ne fonctionne pas.
Voici la sortie
$ 2pagesto1page_pages_pdftk document.pdf "7 7"
document.pdf "7 7"
Error: Unexpected text in page range end, here:
7 7
Exiting.
Acceptable keywords, for example: "even" or "odd".
To rotate pages, use: "north" "south" "east"
"west" "left" "right" or "down"
Errors encountered. No output created.
Done. Input errors, so no output created.
Philippe Weill
Le #26428312
Le 09/03/2017 à 13:41, Olivier V a écrit :
Le 09/03/2017 à 13:34, Philippe Weill a écrit :
normal dans ce cas là tu as trois arguments
./script document.pdf "1 5"

Merci mais j'avais déjà testé ça et cela ne fonctionne pas.
Voici la sortie
$ 2pagesto1page_pages_pdftk document.pdf "7 7"
document.pdf "7 7"
Error: Unexpected text in page range end, here:
7 7
Exiting.
Acceptable keywords, for example: "even" or "odd".
To rotate pages, use: "north" "south" "east"
"west" "left" "right" or "down"
Errors encountered. No output created.
Done. Input errors, so no output created.


en fait j'avais pas fait attention
dans ta ligne
pdftk "$1" cat "$2" output "${1%.pdf}_extrait.pdf"
tu remplace par
pdftk "$1" cat $2 output "${1%.pdf}_extrait.pdf"
et là ca marche
~]$ bash -vx truc.sh Guide-informatique.pdf "1 3 5"
#!/bin/bash
# $1 : document pdf
# $2 : pages à extraire sous la forme 1-7 10 par exemple pour extraire les pages 1 à 7 ET 10
pdftk "$1" cat $2 output "${1%.pdf}_extrait.pdf"
+ pdftk Guide-informatique.pdf cat 1 3 5 output Guide-informatique_extrait.pdf
[ ~]$ pdfinfo Guide-informatique_extrait.pdf
Creator: pdftk 2.02 - www.pdftk.com
Producer: itext-paulo-155 (itextpdf.sf.net-lowagie.com)
CreationDate: Thu Mar 9 14:31:39 2017
ModDate: Thu Mar 9 14:31:39 2017
Tagged: no
Pages: 3
Encrypted: no
Page size: 842 x 595 pts (A4)
File size: 113154 bytes
Optimized: no
PDF version: 1.3
Francois Lafont
Le #26428319
Hello,
On 03/09/2017 12:39 PM, Olivier V wrote:
Le script :
#!/bin/bash
# $1 : document pdf
# $2 : pages à extraire sous la forme 1-7 10 par exemple pour extraire les pages 1 à 7 ET 10
pdftk "$1" cat "$2" output "${1%.pdf}_extrait.pdf"

^^^^
Je pense que, d'après ce que tu indiques, qu'il faut que tu enlèves
les doubles quotes au niveau de $2.
Mais pas ceci pour les pages 1 et 5 :
./script document.pdf 1 5
Alors que la commande suivante ,elle, fonctionne :
pdftk document.pdf cat 1 5 output sortie.pdf

Tu vois, juste après le cat, 1 et 5 forment 2 tokens au niveau
de ton shell (2 arguments en somme). Dans ton script, avec le
« cat "$2" » , cat verra 1 seul token.
--
François Lafont
Olivier V
Le #26428339
C'est cà.
Merci à tous les deux !
Olivier
Publicité
Poster une réponse
Anonyme