Как проверить, больше ли одно значение другого или равно ему?

Как проверить, больше ли одно значение другого или равно ему?
#!/usr/bin/env bash
while true; do
    if xprintidle | grep -q 3000; then
      xdotool mousemove_relative 1 1
    fi
done

В настоящее время я могу проверить, xprintidleравно ли 3000, а затем, если да, выполнить xdotool. Но я хочу проверить, xprintidleбольше или равно ли 3000, а затем выполнить xdotool. Как мне этого добиться?

решение1

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

Вот краткое объяснение:

  • гт- больше чем
  • ge- больше или равно
  • $(...)становится выводом команды внутри скобок

решение2

Вы можете использоватьbashАрифметическое расширениенепосредственно для сравнения целых чисел:

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

Если вам нужна только одна команда, &&это простой способ. В качестве альтернативы используйте if:

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

Я добавил sleepвызов цикла для паузы на полсекунды при каждом запуске — адаптируйте его по мере необходимости.

решение3

Чтобы сказать, больше ли число или равно ли оно другому, можно использовать -ge. Таким образом, ваш код может выглядеть так:

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

Связанный контент