ある値が別の値より大きいか等しいかどうかを確認するにはどうすればよいですか?

ある値が別の値より大きいか等しいかどうかを確認するにはどうすればよいですか?
#!/usr/bin/env bash
while true; do
    if xprintidle | grep -q 3000; then
      xdotool mousemove_relative 1 1
    fi
done

xprintidle現在、 が3000 に等しいかどうかをチェックし、等しい場合は を実行できます。 しかし、 が3000 以上かどうxdotoolかをチェックし、 を実行したいです。 これを実現するにはどうすればよいでしょうか?xprintidlexdotool

答え1

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

簡単に説明すると次のようになります。

  • gt- より大きい
  • 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実行ごとに 0.5 秒間一時停止する呼び出しをループに追加しました。必要に応じて調整してください。

答え3

数値が他の数値より大きいか等しいかを判断するには、 を使用します-ge。コードは次のようになります。

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

関連情報