#!/usr/bin/env bash
while true; do
if xprintidle | grep -q 3000; then
xdotool mousemove_relative 1 1
fi
done
В настоящее время я могу проверить, xprintidle
равно ли 3000, а затем, если да, выполнить xdotool
. Но я хочу проверить, xprintidle
больше или равно ли 3000, а затем выполнить xdotool
. Как мне этого добиться?
решение1
if [ $xprintidle -ge 3000 ]; then
[...stuff...]
Вот краткое объяснение:
- гт- больше чем
- ge- больше или равно
- $(...)становится выводом команды внутри скобок
решение2
Вы можете использоватьbash
Арифметическое расширениенепосредственно для сравнения целых чисел:
#!/usr/bin/env bash
while :; do
(( $(xprintidle) >= 3000 )) && xdotool mousemove_relative 1 1
sleep 0.5
done
Если вам нужна только одна команда, &&
это простой способ. В качестве альтернативы используйте if
:
#!/usr/bin/env bash
while :; do
if (( $(xprintidle) >= 3000 )); then
xdotool mousemove_relative 1 1
fi
sleep 0.5
done
Я добавил sleep
вызов цикла для паузы на полсекунды при каждом запуске — адаптируйте его по мере необходимости.
решение3
Чтобы сказать, больше ли число или равно ли оно другому, можно использовать -ge
. Таким образом, ваш код может выглядеть так:
#!/usr/bin/env bash
while true; do
if [[ $(xprintidle) -ge 3000 ]]; then
xdotool mousemove_relative 1 1
fi
done