Forum Programmation.shell script conversion png vers pdf

Posté par .
Tags : aucun
0
16
fév.
2011
Bonjour ,

voila je souhaiterais simplement convertir les png d'un répértoire donné vers un autre répertoire en format pdf .

j'ai un probleme au niveau du compteur , je ne comprend pas pourquoi cela ne fonctionne pas . En outre je me demandais comment l'écrire de manière plus portable .

merci ;)



le script :



GNU nano 2.2.4 Fichier : png2pdf.0.1.sh


#!/bin/bash +x
set -xv



e=1
end=92


i=$(ls | head -n $e | tail -n 1 )


while
[ "$e" != "$end"] ; do
convert $i pdf/$i.pdf

e=$(($e+1))
done




la sortie en debug :


e=1
++ e=1
end=92
++ end=92


i=$(ls | head -n $e | tail -n 1 )
ls | head -n $e | tail -n 1 )
ls | head -n $e | tail -n 1
+++ ls
+++ head -n 1
+++ tail -n 1
++ i==


while
[ "$e" != "$end"] ; do
convert $i pdf/$i.pdf

e=$(($e+1))
done
++ '[' 1 '!=' '92]'
./png2pdf.0.1.sh: ligne 16 : [: « ] » manquant



j
  • # Espace

    Posté par . Évalué à 1.

    Hello,
    je n'ai pas le temps de tester, mais à première vue ça vient du fait que le guillemet et l'accolade ne sont pas séparés par un espace.

    Essaye de mettre un espace entre le "$end" et l'accolade:


    [ "$e" != "$end" ]
    ----------------^
    • [^] # Re: Espace

      Posté par . Évalué à 1.

      Merci pour l'espace , maintenant il ne me prend plus ma variable "i "

      j'ai l 'erreur :



      ++ convert = =.pdf
      convert: no decode delegate for this image format `=' @ error/constitute.c/ReadImage/532.
      convert: missing an image filename `=.pdf' @ error/convert.c/ConvertImageCommand/2970.
      ++ '[' 1 '!=' 92 ']'

    • [^] # Re: Espace

      Posté par . Évalué à 1.

      En français, l'espace typographique est un nom féminin (voir https://secure.wikimedia.org/wiktionary/fr/wiki/espace#Nom_c(...) On écrit donc « une espace ».
  • # Erreur d’algo.

    Posté par . Évalué à 3.

    Là si j’ai bien compris tu fais 92 fois la même commande. Dans ta boucle while $i ne change jamais de valeur.

    Utilise plutôt la boucle for :

    for i in *.png
    do
      ma commande sur le fichier $i
      (basename te permettra d’enlever l’extension .png à $i)
    done
    • [^] # Re: Erreur d’algo.

      Posté par . Évalué à 1.

      e est incrémenter a chaque itération , il n'y a pas de boucle infini
      • [^] # Re: Erreur d’algo.

        Posté par (page perso) . Évalué à 2.

        92 ≠ ∞

        La boucle n'est pas infinie, mais comme i ne change pas, les 92 passages dans la boucle exécutent convert avec les mêmes arguments.
  • # srsly

    Posté par (page perso) . Évalué à 3.

    for PNG in *.png
    do
    PDF=`echo $PNG | sed 's/png$/pdf/`
    convert $PNG $PDF
    done

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: srsly

      Posté par . Évalué à 7.

      for PNG in *.png ; do
      convert $PNG ${PNG%.png}.pdf
      done

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # sam2p

    Posté par (page perso) . Évalué à 2.

    Un conseil, utilise sam2p au lieu de convert. Tu n'y perdras pas la compression PNG, comme ça.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.