
Xdotolを使用してシェルスクリプトを自動化しようとしています(Bキーを押して任意の間隔-sec.milsec)。
スクリプトを任意の回数だけ実行することはできません(現在の回数は25回に制限されています)。計算乱数(範囲20〜45)を取得する方法、またはループ反復のランダムな回数を取得する方法を探しています。
配置1 - 25番Bキー+ランダムスリップ配置
2 - 20番Bキー+ランダムスリップ配置
3 - 35番Bキー+ランダムスリップ配置
4 - 45番Bキー+ランダムスリップ
....
助けてくれてありがとう。
#!/bin/bash
while true; do
xdotool key b
sleep $((1 + RANDOM %1)).$((RANDOM%999))
count=$(( $count+1 ))
if [ "$count" = "25" ]; then
count=0
sleep $((1 + RANDOM % 1)).$((RANDOM%99))
echo " blah"
fi
done
Bodoユーザーのコメントに基づいて更新されました。
作業コード(スリープ状態から素数を削除)
#!/bin/bash
max=$((20 + RANDOM % 26))
while true; do
xdotool key b
sleep $((0 + RANDOM %1))
count=$(( $count+1 ))
if [ "$count" = "$max" ]; then
count=0
max=$((20 + RANDOM % 26))
sleep $((1 + RANDOM % 1))
echo " blah"
fi
done
答え1
shuf
以下を使用して、低から高までのn個の乱数を生成できます。
#!/bin/bash
myloop () {
local count
for ((count=1;count<="${1:-0}";count++)); do
xdotool key b
sleep $((RANDOM %2)).$((RANDOM%10))$((RANDOM%10))$((RANDOM%10))
done
}
# run 4 times with random values between 20 and 45
for i in $(shuf -n 4 -i 20-45); do
myloop "$i"
done
# run 4 times with random values between 20 and 45 in increments of 5
for i in $(shuf -n 4 -i 1-5); do
myloop "$((i * 5 + 20))"
done
# run forever with random values between 20 and 45 in increments of 5
while true; do
myloop "$(( $(shuf -n 1 -i 1-5) * 5 + 20))"
done
ランダムな睡眠の最初の部分は$((1 + RANDOM %1))
常に1を生成します。
2番目の部分は$((RANDOM%999))
0から998の値を生成します。
$((RANDOM %2)).$((RANDOM%10))$((RANDOM%10))$((RANDOM%10))
0から1.999までの値を生成するように変更しました。
答え2
max
任意の数字などの変数を設定し、その変数と比較できます。
#!/bin/bash
max=$((20 + RANDOM % 26))
while true; do
xdotool key b
sleep $((1 + RANDOM %1)).$((RANDOM%999))
count=$(( $count+1 ))
if [ "$count" = "$max" ]; then
count=0
max=$((20 + RANDOM % 26))
sleep $((1 + RANDOM % 1)).$((RANDOM%99))
echo " blah"
fi
done
sleep
整数だけがサポートされるわけではありません。私はこのエラーを修正していません。
別のオプションは、2つのネストされたループを使用することです。
#!/bin/bash
while true; do
count=$((20 + RANDOM % 26))
while [ "$count" -gt 0 ]; do
xdotool key b
sleep $((1 + RANDOM %1)).$((RANDOM%999))
count=$(( $count-1 ))
done
sleep $((1 + RANDOM % 1)).$((RANDOM%99))
echo " blah"
done