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