¿Cómo comprobar si un valor es mayor o igual a otro?

¿Cómo comprobar si un valor es mayor o igual a otro?
#!/usr/bin/env bash
while true; do
    if xprintidle | grep -q 3000; then
      xdotool mousemove_relative 1 1
    fi
done

Actualmente puedo verificar si xprintidlees igual a 3000 y luego, si lo es, ejecutar xdotool. Pero quiero verificar si xprintidlees 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 usarbashExpansió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 sleepllamada 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

información relacionada