Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/07/2008, à 12:57

aspaite

Problème de script utilisant la commande read

Bonjour,

J'ai écrit un petit script destiné à scanner un document et à l'envoyer vers une adresse mail. Alors que j'ai surmonté sans trop de mal l'enchaînement de scanimage, pnmtojpeg et autre sendmail smile ... je bute sur deux trucs apparemment tout bête.

1. Voici le script :

#!/bin/sh
echo "Veuillez allumer l'imprimante/Scanner"
read -s -n 1 -p "Voulez-vous continuer ? [O/N]" keypress
echo
case $keypress in
   [yYoO]*)
      NOWDATE=AutoMail_`date +%y%m%d-%H:%M`
      echo Scan en cours ... Veuillez patienter
      scanimage -p --resolution 150 | pnmtojpeg - > ScanTest.jpg
      echo
      echo Envoi en cours ...
      mpack -s $NOWDATE -o AutoMail.tmp ScanTest.jpg
      sendmail toto.toto@domaine.com < AutoMail.tmp
      rm AutoMail.tmp
      rm ScanTest.jpg
esac
echo "Terminé"

Voici mon premier problème : Ce script tourne parfaitement lorsqu'il est appelé depuis un terminal "./AutoScan.sh" . En revanche, lorsque je crée un lanceur (lancer dans un terminal) appelant ce même script, rien ne se passe ! Si je modifie le script pour ôter la ligne read... en la remplaçant par exemple par "keypress=O" , ça fonctionne fort bien.
Evidemment, l'interactivité avec l'utilisateur, lui demandant d'allumer le scan, n'est pas indispensable mais j'aimerais bien que ça fonctionne smile

Quelqu'un a-t-il une idée, voire une solution alternative n'utilisant pas "read" pour aboutir à un résultat fonctionnel identique, y-compris lorsqu'on appelle le script depuis un lanceur.

Merci d'avance pour votre aide,
Cordialement.
Alain

Hors ligne

#2 Le 26/07/2008, à 22:43

gillou

Re : Problème de script utilisant la commande read

Bonjour,
Essaye zenity (il faut installer le paquet zenity avant)
Ca lance une boite de dialogue graphique.

keypress=`zenity --question --text "Voulez-vous continuer ?"`

keypress = 0 : OK
keypress = 1 : annuler

Dernière modification par gillou (Le 26/07/2008, à 22:45)

Hors ligne

#3 Le 27/07/2008, à 18:56

aspaite

Re : Problème de script utilisant la commande read

Merci Gillou,

J'ai essayé zenity et, effectivement, ça m'a permis de solutionner mon problème.
La variable $keypress n'a plus raison d'être puisque "zenity --question" renvoit la réponse dans le code de retour de la commande. Mon code, revu et corrigé, grâce à tes conseils, donne désormais ceci :

#!/bin/sh
zenity --question --text "Veuillez allumer l'imprimante/Scanner \n Voulez-vous continuer ?" --title "Scan2Mail"
if [ $? = "0" ]
then
      NOWDATE=AutoMail_`date +%y%m%d-%H:%M`
      echo Scan en cours ... Veuillez patienter
      scanimage -p --resolution 150 | pnmtojpeg - > ScanTest.jpg
      echo
      echo Envoi en cours ...
      mpack -s $NOWDATE -o AutoMail.tmp ScanTest.jpg
      sendmail toto.toto@domaine.com < AutoMail.tmp
      rm AutoMail.tmp
      rm ScanTest.jpg
fi
echo "Terminé"

Pour améliorer un peu, on pourrait mettre le destinataire en paramètre et appeler la commande avec le destinataire en argument... mais dans mon cas, j'ai besoin que ça reste "hard-codé". Merci encore.
Cordialement,
Alain

Hors ligne