#!/usr/bin/env bash
while true; do
if xprintidle | grep -q 3000; then
xdotool mousemove_relative 1 1
fi
done
Atualmente consigo verificar se xprintidle
é igual a 3000 e então, se for, executar xdotool
. Mas quero verificar se xprintidle
é maior ou igual a 3000 e depois executar xdotool
. Como posso conseguir isso?
Responder1
if [ $xprintidle -ge 3000 ]; then
[...stuff...]
Aqui está uma explicação rápida:
- gt- Maior que
- ge- maior ou igual a
- $(...)torna-se a saída do comando entre parênteses
Responder2
Você pode usarbash
Expansão Aritmética dediretamente para comparar números inteiros:
#!/usr/bin/env bash
while :; do
(( $(xprintidle) >= 3000 )) && xdotool mousemove_relative 1 1
sleep 0.5
done
Se você deseja apenas o comando único, &&
é uma maneira simples. Como alternativa, use if
:
#!/usr/bin/env bash
while :; do
if (( $(xprintidle) >= 3000 )); then
xdotool mousemove_relative 1 1
fi
sleep 0.5
done
Adicionei uma sleep
chamada ao loop para fazer uma pausa de meio segundo em cada execução – adapte-a conforme necessário.
Responder3
Para dizer se o número é maior ou igual a outro você pode usar -ge
. Então seu código pode parecer
#!/usr/bin/env bash
while true; do
if [[ $(xprintidle) -ge 3000 ]]; then
xdotool mousemove_relative 1 1
fi
done