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을 생성합니다.
두 번째 부분은 $((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
정수만 지원되는 것은 아닙니다. 저는 이 오류를 수정하지 않았습니다.
또 다른 옵션은 두 개의 중첩 루프를 사용하는 것입니다.
#!/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