Linux сценарий оболочки на фоне, l oop выход из чтения буфера клавиатуры - PullRequest
0 голосов
/ 15 марта 2020

На одном ноутбуке с x-ubuntu 18.04 у меня есть скрипт оболочки (. sh), который автоматизирует серию кликов в веб-приложении (через xdotool). Все работает нормально, но мне нужно иметь возможность остановить скрипт нажатием кнопки sh (в то время как фокусировка на браузере происходит из-за щелчков). Сейчас я буферизовал, щелкая скрипт в окне терминала каждые k (чтение из терминала) итераций и давая 5 секунд сна, чтобы я мог нажать ctrl + c. Это решение, однако, не только изящно, но и заставляет меня всегда держать терминал и браузер в одном и том же положении и 5 секунд «теряться» каждые k итераций. Я прилагаю сводный скрипт, я действительно все испробовал, но не могу понять, какое-то время go я сделал такой же скрипт на C ++ (но, к сожалению, у меня был windows, и я не могу использовать c ++ на этом ноутбук) собираюсь читать буфер клавиатуры ... ps: я не могу использовать различные автокликеры, потому что скрипт, помимо нажатия, также выполняет другие действия (он запускает программы, обновляет базы данных и т. д. c.)

#!/bin/sh
p_p()
{ # brings the terminal window to the front
xdotool mousemove 300 0
sleep 0.5   # top-panel up
xdotool click 1
}

i=1
echo "every how many iterations do you want the possibility to interrupt?"
read k

until [ $i -gt 100000000000 ] 
do

for X in $(seq 3)
do
    xdotool mousemove 974 431
    xdotool click 1
    sleep 0.1
done

    #here there is a function for other stuff

remainder=$(( i % k ))

    if [ "$remainder" -eq 0 ]; then
    p_p
    echo "press ctrl + c for interrupt"
    sleep 5
else
    sleep 0.5 
fi  

i=$(( i+1 ))
echo "$i"
    done
    echo "security limit reached"
...