Disclaimer: Ich bin (noch) ein Shell-Script-Noobie.
Vorhaben: Ein Skript, dass den Webcam-Stream scannt, aus dem Stream QR-Codes dekodiert, die Ausgabe in den Zwischenspeicher weiterleitet, und nach erstem "erkannten" QR-Code Scann das Skript beendet.
Meine Idee/Umsetzung: Ich scanne mittels "zbarcam" den Videostream der Webcam und pipe den Output sowohl in eine Textdatei, als auch in die Zwischenablage. Also so:
1 2 3 | #!/bin/bash FILE=~/.zbarcam-temp.txt zbarcam --raw /dev/video0 | tee $FILE | xclip -in -selection clipboard |
Um das Skript zu schließen will ich in einer until-Schleife via "test" überprüfen, ob die erstellte Textdatei leer ist. Sofern dies der Fall ist, soll weiter gescannt werden. Sobald dies nicht mehr der Fall ist, soll diese Textdatei geleert werden und daraufhin "zbarcam" beendet werden. Mein Versuch:
1 2 3 4 5 6 7 8 | #!/bin/bash FILE=~/.zbarcam-temp.txt until test -s $FILE; do zbarcam --raw /dev/video0 | tee $FILE | xclip -in -selection clipboard done > $FILE; killall zbarcam |
Problem: Ich muss "zbarcam" nach wie vor von Hand schließen. Erst dann werden die nachfolgenden Befehle ausgeführt. (Ich scheine die Handhabung von until-Schleifen nicht richtig zu verstehen.) Wo liegt mein Denkfehler? Was mache ich falsch? Hilfe, Verbesserungen und Anregungen sind sehr willkommen.
Bearbeitet von rklm:
Syntaxhighlighting. Bitte beachte Forum/Syntax!