Como verificar se um valor é maior ou igual a outro?

Como verificar se um valor é maior ou igual a outro?
#!/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 usarbashExpansã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 sleepchamada 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

informação relacionada