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
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
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
On 03/09/2017 12:39 PM, Olivier V wrote:
^^^^
Je pense que, d'après ce que tu indiques, qu'il faut que tu enlèves
les doubles quotes au niveau de $2.
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
Merci à tous les deux !
Olivier