2009-10-15 30 views
2

Je veux utiliser zbarcam mais après avoir lu un code à barres, il ne s'arrête pas.Comment demander à bash d'attendre un résultat et d'envoyer un SIGKILL lorsqu'il l'obtient?

$ zbarcam | xvkbd -file - -window emacs 
EAN-13:6941428130969 
CODE-128:3096140900557 

Savez-vous comment je peux dire bash tuer zbarcam après l'impression sur le stdout le premier \ n?

+0

+1 pour me faisant prendre conscience de zbarcam, qui a l'air cool! – Greg

+0

Oui, c'est vraiment cool. http://zbar.sf.net/ – Natim

Répondre

1

Essayez

tmp=/tmp/barcode.$$ # Note: security risk 
zbarcam > $tmp & 
pid=$! 
# Sleep until file has content 
while [[ ! -s $tmp ]] ; do 
    sleep 1 
done 
kill $pid 
cat $tmp 

Notez qu'il pourrait ne pas fonctionner si zbarcam ne chasse pas sa sortie.

+0

Merci, ça marche bien! – Natim

1

Avez-vous essayé?

zbarcam | head -1 | xvkbd -file - -window emacs 
+0

Il suffit d'arrêter d'écrire sur le clavier virtuel, mais n'arrête pas zbarcam. – Natim

+0

Ok, la technique fonctionne pour certaines choses, mais pas tout. Je suis content que vous ayez une autre réponse qui a fonctionné pour vous. – retracile

-1
tmp=/tmp/barcode.$$ # Note: security risk 
zbarcam > $tmp & 
pid=$! 
# Sleep until file has content 
while [[ ! -s $tmp ]] ; do 
    sleep 1 
done 
kill $pid 
cat $tmp