Script bash pour l'impression

Salut,

Pour le fun (et aussi ça me permettra ne pas retenir ces commandes… et améliorer mon niveau en scripting :frowning:) je suis en train de me faire un script bash pour gérer le spooler.

[code]#!/bin/bash

echo -e « Que veux-tu faire ? »
echo -e « ------------------- »
echo -e « 0: Imprimer un fichier »
echo -e « 1: Visualiser la file d’impression »
echo -e « 2: Voir des informations sur l’état et la file d’attente »
echo -e « 3: Annuler impression »

read choix

if [ « $choix » -ge « 4 » ];
then
echo " pas bon "
else

case $choix in
0) lp -dIMP ;; #coder ça
1) lpq ;;
2) lpstat -t ;;
3) cancel ;; # coder ça
esac

fi[/code]

voilà donc avant de m’amuser à gérer d’éventuelles erreurs, j’aimerais coder le choix 0 et 3
si l’utilisateur choisi 0 :
lp -dNOMDELIMPRIMANTE /document/a/imprimer

quand je fais lp -d et que je fais tab , je peux choisir mon imprimante puis faire espace et choisir le doc toujours avec tab. Donc soit :
1 - le script lance lp -d et après je peux me débrouiller seul avec tab
2 - soit plus fun, il me demande quelle imprimante puis quel fichier

Pour l’option 3 (cancel), il faudrait récupérer la liste avec lpstat et ensuite la proposer.

Voilà donc je ne cherche pas la solution mais que quelqu’un m’explique la démarche.

Merci par avance :006

edit : pour cancel :
lpstat -t | awk ‹ {print $3} › | grep -e ‹ |[0-9] ›

je n’arrive pas à faire en sorte de n’affiche QUE les nombres et éliminer ceux qui sont « entourés » de texte (pour ne pas prendre en compte les imprimantes par ex : Canon-C325)

edit2 : voilà :slightly_smiling:
lpstat -t | awk ‹ {print $3} › | sed ‹ /[a-z][a-Z]/d ›

donc ce que je voudrais maintenant :
Si on choisit l’option 3 →
ça affiche les jobs possibles
on choisit le ou les jobs
puis le script lance : cancel #jobid

mais du coup je n’arrive pas à afficher plusieurs choses dans une variable :

[code]cancel=(echo « voilà la liste »
echo -e « sqsdsq »\n
echo -e « sdqsdq »)

echo $cancel[/code]

du coup je vois pas comment réaliser la chose ?

Je ne répond pas a ta question mais je te conseil de regarder la commande [mono]getops[/mono] et [mono]getop[/mono], ça te permettra de gérer plusieurs options a la fois