Wie überprüft man, ob ein Wert größer oder gleich einem anderen ist?

Wie überprüft man, ob ein Wert größer oder gleich einem anderen ist?
#!/usr/bin/env bash
while true; do
    if xprintidle | grep -q 3000; then
      xdotool mousemove_relative 1 1
    fi
done

Derzeit kann ich prüfen, ob xprintidlegleich 3000 ist und dann, wenn es so ist, ausführen xdotool. Aber ich möchte prüfen, ob xprintidlegrößer oder gleich 3000 ist und dann ausführen xdotool. Wie kann ich das erreichen?

Antwort1

if [ $xprintidle -ge 3000 ]; then
  [...stuff...]

Hier ist eine kurze Erklärung:

  • gt- größer als
  • ge- größer oder gleich
  • $(...)wird zur Ausgabe des Befehls in den Klammern

Antwort2

Sie könnenbashs Arithmetische Erweiterungdirekt zum Vergleichen ganzer Zahlen:

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

Wenn Sie nur den einzelnen Befehl möchten, &&ist dies ein einfacher Weg. Alternativ verwenden Sie if:

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

Ich habe sleepder Schleife einen Aufruf hinzugefügt, um bei jedem Durchlauf eine halbe Sekunde lang anzuhalten – passen Sie ihn nach Bedarf an.

Antwort3

Um anzugeben, ob die Zahl größer oder gleich einer anderen ist, können Sie verwenden -ge. Ihr Code kann also wie folgt aussehen:

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

verwandte Informationen