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 dentro dos parênteses
#!/usr/bin/env bash
while true; do
if xprintidle | grep -q 3000; then
xdotool mousemove_relative 1 1
fi
done
Atualmente, posso verificar se xprintidle
é igual a 3000 e, se estiver, execute xdotool
. Mas quero verificar se xprintidle
é maior ou igual a 3000 e, em seguida, executar xdotool
. Como posso conseguir isso?
if [ $(xprintidle) -ge 3000 ]; then
[...stuff...]
Aqui está uma explicação rápida:
Você pode usar a Expansão aritmética de bash
diretamente para comparar inteiros:
#!/usr/bin/env bash
while :; do
(( $(xprintidle) >= 3000 )) && xdotool mousemove_relative 1 1
sleep 0.5
done
Se você quiser 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
Eu adicionei uma chamada sleep
ao loop para pausar por meio segundo a cada execução - adapte-a conforme necessário.
Para dizer se o número é maior ou igual ao outro, você pode usar -ge
. Então, seu código pode se parecer com
#!/usr/bin/env bash
while true; do
if [[ $(xprintidle) -ge 3000 ]]; then
xdotool mousemove_relative 1 1
fi
done