@Da3z1e

Можно ли ограничить команду read?

#!/bin/sh
set -x

IDLE_TIME=$((5000))

	while [ 0 ]
	do
	sleep_time=$IDLE_TIME
	triggered=false

	if [ read R</dev/ttyUSB0 ]; then
			if [ "$R" -eq "Sleep" ]; then 
					echo '&'> /dev/ttyUSB0
			fi
	fi
    	idle=$(xprintidle)
    if [ $idle -ge $IDLE_TIME ]; then
        	if ! $triggered; then
            	zenity --question --title="Бездействие пользователя" \
        --text="Вы возле компьютера?" \
        --timeout=10
 if [ $? -eq "0" ]
 then
		triggered=false
        	sleep_time=$((IDLE_TIME-idle+100))
	else echo '&'> /dev/ttyUSB0
		triggered=true
        	sleep_time=$IDLE_TIME
 	fi

        	fi
    fi
	sleep 1
	done

Есть вот такой скрипт. Есть ли какие-либо параметры у команды read, чтобы она выполнялась только тогда, когда на порт приходят данные? Штука с if [ read ] не работает, а просто команда read забивает весь скрипт и он ждет момента прихода данных на порт и весь остальной скрипт не выполняется. с таймаутом тоже не подходит, так как дальше после времени не идет дальше по коду. Как ограничить выполнение команды read?
  • Вопрос задан
  • 253 просмотра
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Вроде бы совсем недавно уже был такой вопрос.

Почему timeout у read не подходит типа:
read -t 5 R/ttyUSB0

зачем if [ read ] - что это вообще за конструкция if [ read ] ?
может надо if read ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы