#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 ... 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
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