#!/usr/bin/env bash
while true; do
if xprintidle | grep -q 3000; then
xdotool mousemove_relative 1 1
fi
done
Actualmente puedo verificar si xprintidle
es igual a 3000 y luego, si lo es, ejecutar xdotool
. Pero quiero verificar si xprintidle
es mayor o igual que 3000 y luego ejecutar xdotool
. ¿Cómo puedo conseguir esto?
Respuesta1
if [ $xprintidle -ge 3000 ]; then
[...stuff...]
Aquí hay una explicación rápida:
- gt- mas grande que
- ge- mayor o igual que
- $(...)se convierte en la salida del comando dentro del paréntesis
Respuesta2
Puedes usarbash
Expansión aritmética dedirectamente para comparar números enteros:
#!/usr/bin/env bash
while :; do
(( $(xprintidle) >= 3000 )) && xdotool mousemove_relative 1 1
sleep 0.5
done
Si solo quieres el comando único, &&
es una forma sencilla. Alternativamente, utilice if
:
#!/usr/bin/env bash
while :; do
if (( $(xprintidle) >= 3000 )); then
xdotool mousemove_relative 1 1
fi
sleep 0.5
done
Agregué una sleep
llamada al bucle para pausar medio segundo en cada ejecución; adáptela según sea necesario.
Respuesta3
Para decir si un número es mayor o igual que otro puedes usar -ge
. Entonces tu código puede verse así
#!/usr/bin/env bash
while true; do
if [[ $(xprintidle) -ge 3000 ]]; then
xdotool mousemove_relative 1 1
fi
done