Le vendredi 4 octobre 2024 à 21:50, Marc Chantreux <m...@unistra.fr> a écrit :

> salut,
>

Salut,
 
 
> respecter les conventions unix rendent tes scripts
> 
> * plus faciles à écrire
> * plus facile à prendre en main
> * plus génériques et manipulables ( si tu peux eviter -o et écrire dans
> stdout, ce serait bien)
> 
J'aurais du préciser dans ma demande (j'ai voulu simplifier en parlant de 
concaténation, mais l'exemple était mal choisis), c'est pour sortir un pdf, je 
ne sais pas comment envoyer autre chose que des caractères dans stdout, mais je 
vais me documenter.

> ces conventions sont:
> 
> * les flags puis la liste des input
> * si la liste est vide, stdin est l'input
> * si la liste contient -, c'est pour traiter stdin
> * le résutat s'affiche par defaut dans stdout (ca permet de piper, par 
> exemple)
> * les messages pour l'humain (et pas seulement les erreurs) dans stderr
>
Je découvre ça en te lisant, je ne connaissais pas ces conventions.

 
> demo ( /bin/sh)
> 
> dest=stdout
> set -- -o target source1 source2 source3
> while getopts ho: arg; do
> case "$arg"
> in (h) usage
> ;; (o) dest=$OPTARG
> esac
> done
> shift $((OPTIND - 1))
> for it; do
> echo le traitement de $it vers $dest
> done
> 

Je viens de tester, écrit comme ça, ca marche ! 
Mais je cale sur un truc, qu'est-ce qui permet l’affectation de it(j'ai renommé 
"it" par "bidule", pour m'assurer que ce n'est pas une variable prédéfinie.) ?


for bidule; do
 echo le traitement de $bidule vers $dest
done

Ce n'est pas une variable prédéfinie affectée par getopts (comme OPTARG ou 
OPTIND), ne croyant pas à la magie... ;-)
Comment ça marche ?

> > $OPTARG ne contient que fichier1.txt, comme si fichier2.txt, n’était pas
> > analysé par getopts
> 
> 

> si tu nous explique ce que fait ton script, on pourrait peut-être t'aider 
> mieux?
> 

Ce que je voudrais qu'il fasse, c'est prendre une série d'images de document 
papier en A4, (dont il faudra aussi scripter le traitement : poids 
redimensionnement en A4, etc), les mettre dans un pdf(une par page), puis faire 
une reconnaissance de caractère.

img2pdf --pagesize A4 AAA_9722.jpg AAA_9721.jpg | ocrmypdf - myfile.pdf

En effet, j'ai l'impression que si je peux utiliser le "|", c'est que img2pdf 
envois le pdf dans stdout, c'est bien ça que je dois faire plutôt que de 
définir un fichier de sortie avec -o fichier.pdf.

Merci 

--
Benoît

Répondre à