#!/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?