web-dev-qa-db-fra.com

Comment vérifier si une valeur est supérieure ou égale à une autre?

#!/usr/bin/env bash
while true; do
    if xprintidle | grep -q 3000; then
      xdotool mousemove_relative 1 1
    fi
done

Actuellement, je peux vérifier si xprintidle est égal à 3000 et si c'est le cas, exécutez xdotool. Mais je veux vérifier si xprintidle est supérieur ou égal à 3000, puis exécuter xdotool. Comment puis-je atteindre cet objectif?

4
Newb1996
if [ $(xprintidle) -ge 3000 ]; then
  [...stuff...]

Voici une explication rapide:

  • gt - supérieur à
  • ge - supérieur ou égal à
  • $ ( ... ) devient le résultat de la commande entre parenthèses
3
Gergely Lukacsy

Vous pouvez utiliser bashname __ ’s Arithmetic Expansion directement pour comparer des nombres entiers:

#!/usr/bin/env bash
while :; do
  (( $(xprintidle) >= 3000 )) && xdotool mousemove_relative 1 1
  sleep 0.5
done

Si vous voulez juste la commande unique, && est un moyen simple. Sinon, utilisez ifname__:

#!/usr/bin/env bash
while :; do
  if (( $(xprintidle) >= 3000 )); then
    xdotool mousemove_relative 1 1
  fi
  sleep 0.5
done

J'ai ajouté un appel sleepà la boucle pour qu'il s'interrompe pendant une demi-seconde à chaque exécution - adaptez-le si nécessaire.

9
dessert

Pour dire si le nombre est supérieur ou égal à l'autre, vous pouvez utiliser -ge. Donc, votre code peut ressembler à

#!/usr/bin/env bash
while true; do
    if [[ $(xprintidle) -ge 3000 ]]; then
        xdotool mousemove_relative 1 1
    fi
done
4
Zalatik