Автоматизация действий на bash

Какое-то время я играл в игру, где были некоторые очень надоедливые действия, которые нужно было повторять раз за разом. Я нашёл решение этой проблемы при помощи bash. Про название игры я умолчу.

Это не призыв сейчас лепить тучу ботов, а просто небольшой мануал, как автоматизировать действия средствами bash. Обычно юзается на Linux.

Значит, в этом задании нужно было собрать 17 фиговин.
Чтобы их собрать, нужно было сначала нажать на «Enter», затем подождать 6 секунд пока полоса загрузки достигнет конца и снова нажать «Enter». После этого, ждём 11 секунд и можно начинать по новому кругу.

Для отправки нажатия клавиши мы будем использовать xdotool. Для разных систем он ставится по-разному, не буду зацикливать на этом внимание.

Создаём файл с названием, например, autosbor.sh и открываем его редактирование.
У меня Debian, поэтому я использую команду nano:
nano autosbor.sh
Для начала, объявим переменные.

#!/bin/bash
declare -i a=17 #кол-во повторений
declare -i i=1 #счётчик. Не трогаем
declare -i p=1 #порог

Функция declare нужна как раз для объявления переменных. Параметр -i показывает, что эта переменная будет типа integer (числовой).
Счётчик — переменная, которую будем в цикле увеличивать.
Порог — по сколько прибавлять. Был момент, когда мне было необходимо ещё и выводить в консоль числа в процессе выполнения.

Далее я добавлял паузу в скрипте, чтобы успевать переключиться на нужное окно. Можно было сделать смену окна по его ID, но счёл это немного неудобным.

sleep 5

Ну и под конец сам цикл. Перед паузой в цикле главное не забыть поставить увеличение переменной-счётчика, иначе цикл получится бесконечным.

while [ $a != $i ]
do
xdotool key Return
sleep 6
xdotool key Return
i=$(($i+$p))
sleep 11
done

Аргумент key — это нажатие клавиши на клавиатуре. Return — непосредственно сама клавиша Enter.

Собственно всё. Можно давать скрипту права на выполнение:
chmod +x autosbor.sh
И запускать:
./autosbor.sh