Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bash et espacements

5 réponses
Avatar
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

5 réponses

Avatar
Philippe Weill
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
Avatar
Olivier V
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.
Avatar
Philippe Weill
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
Avatar
Francois Lafont
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
Avatar
Olivier V
C'est cà.
Merci à tous les deux !
Olivier