bash + 루프에서 스크립트 실행

bash + 루프에서 스크립트 실행

10단계마다 run.sh를 실행해야 합니다.

for x in {1..100} ; do
  sleep 1
  /tmp/run.sh
done

따라서 결국 run.sh는 10번 실행됩니다.

어떻게 할 수 있나요?

다른 예(이 경우 run.sh는 20번 실행됩니다)

for x in {1..200} ; do
  sleep 1
  /tmp/run.sh
done

답변1

값을 x10으로 나눌 수 있는지 테스트하면 됩니다.

for x in {0..100} ; do
    if (( x % 10 == 0 ))
    then
        /tmp/run.sh
    fi
    sleep 1
done

답변2

이건 직업이야계수 ( %) 운영자. 예를 들어:

for x in {1..100} ; do
  sleep 1
  [ $((x % 10)) -eq 0 ] && /tmp/run.sh
done

다른 예시:

$ for i in {1..100} ; do  [ $((i % 10)) -eq 0 ] && echo $i  ; done
10
20
30
40
50
60
70
80
90
100

답변3

for (( i = 0; i < 10; ++i )); do
    /tmp/run.sh
    sleep 10
done

스크립트를 10번 실행하려면 루프를 10번 실행하고 그 사이에 적절한 시간 동안 휴면 상태를 유지하세요.

또는 매개변수를 사용하여 스크립트 실행 횟수를 결정합니다.

n=20
for (( i = 0; i < n; ++i )); do
    /tmp/run.sh
    sleep 10
done

관련 정보