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

3
#!/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?

    
por Newb1996 01.06.2018 / 16:39

3 respostas

3
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
por Gergely Lukacsy 01.06.2018 / 16:53
8

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.

    
por dessert 01.06.2018 / 17:54
4

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
    
por Zalatik 01.06.2018 / 17:00