2017-09-11 1 views
0

우분투 배포본에서 자동 크리커로 작동하도록 스크립트를 작성했습니다. 클릭은 작동하지만 'sleep'명령이 제대로 작동하지 않는 것 같습니다. 클릭을 꺼내어 터미널에서 실행하면 잠자기가 의도 한대로 작동합니다. 그러나 내가 그것을 지름길에 묶고 게임을하는 동안 그것을 실행하면 잠을 자지 못한다.BASH 스크립트 'sleep'명령이 작동하지 않습니다.

#!/bin/bash 
counter=0  #number of iterations executed 
loop_to=1800 #number of iterations to do 
break_interval=10 #time to break, in seconds 
click_interval=.5 #time between iterations, in seconds 
break_at=15 #how many iterations before taking a break 


while [ $counter -lt $loop_to ]; do 
    xdotool click 1 
    sleep $click_interval 
    echo $counter 
    let counter=counter+1 
    if [[ $(($counter % $break_at)) == 0 ]]; then 
     sleep $break_interval 
     echo I slept 
    fi 
done 

가장 중요한 수면은 x 시간 동안 자동 교정기를 일시 중지하기위한 break_interval입니다.

+0

바로 가기를 통해 스크립트를 실행할 때 스크립트가 'bash'로 실행되는지 확인 하시겠습니까? ''[['만'bash'에 의존하는 유일한 것입니다. – chepner

+0

첫 줄에'#! '앞에 공백이있는 것처럼 보입니다. 즉, 스크립트가 반드시 bash (어떤 프로그램이 실행하는지에 따라 다름)에서 실행되는 것은 아닙니다. – cdarke

+0

bash를 사용하여 실행되지 않았습니다. 여러 가지 이유로 저는 바인딩에 대한 액세스 권한이없는 것으로 알고 있습니다. 제 친구가 쓴 스크립트입니다. 그는 "sh"를 사용하여 그것을 실행하고 있었고 그래서 BASH의 특별한 것들이 그것을 작동시키지 못하게 만들었습니다. 도와 주셔서 감사합니다! – Nathan

답변

0

테스트 :

[[ $(($counter % $break_at)) == 0 ]]

를 기록 할 수있다 :

[ $(($counter % $break_at)) -eq 0 ]

[[ x == y ]] 문자열 평등을위한 Bash 전용 및 테스트입니다.

[ x -eq y ]은 모든 POSIX 셸에서 작동하며 정수가 같은지 테스트합니다.

@cdarke 노트에 따르면, 귀하의 주니어 라인은 올바르지 않으며 첫 두 글자는 #!이어야하며 따라서 이것을 실행하려면 /bin/sh이 될 것입니다.

+1

친구를 대신하여 게시했습니다. 그가 "sh"로 실행하고 있다고 밝혀졌고, 내가 도움이 된 의견과 제안에 대한 도움과 제안을 한 후에 말입니다. 고마워요! – Nathan

관련 문제