Рейтинг:0

Получить первый вывод из STDOUT и завершить процесс

флаг hn

Я хочу отсканировать один QR-код и вернуть результат в STDOUT. Я узнал ZBar, небольшая приятная программа, которая делает почти все, что мне нужно.

$ zbarcam --raw

сканирует QR-коды камерой ПК и возвращает данные в STDOUT. Однако он не прекращается. Программа сканирует несколько кодов и возвращает их. Он останавливается только при закрытии окна видео или отправке прерывания.

Как мне вообще получить только первый вывод из STDOUT, завершить процесс, а затем снова отправить полученный вывод в STDOUT в командной строке? Мне, вероятно, нужен скрипт Bash для этого, верно?

bac0n avatar
флаг cn
разве опция `-1, --oneshot` не завершает работу zbar?
trizuz avatar
флаг hn
Нет такого варианта.
bac0n avatar
флаг cn
кажется, введено в [0.23.1] (https://github.com/mchehab/zbar/releases/tag/0.23.1)
Рейтинг:0
флаг cn

С использованием бить, и предполагая, что нужно прочитать только одну строку (qrcode не имеет встроенных новых строк), вы можете попробовать

(echo $BASHPID; exec zbarcam --raw ) | 
(читать pid; IFS= читать -r строку; kill -hup "$pid"; printf "%s\n" "$line")

$БАШПИД это потому что $$ не изменяется в подоболочках, так же как и pid родительской оболочки. IFS= читать -r должен сохранять обратную косую черту и начальные пробелы во входных данных.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.