순차적 무한 루프에서 bash 스크립트를 실행하는 방법은 무엇입니까?

순차적 무한 루프에서 bash 스크립트를 실행하는 방법은 무엇입니까?

/tmp/1.sh /tmp/2.sh /tmp/3.sh /tmp/4.sh를 실행한 다음 /tmp/1.sh를 다시 반복하려면 어떻게 해야 합니까? 무한 반복하는 것이 가장 좋습니다.

답변1

for루프 내에서 루프를 사용하십시오 while true.

while true; do
  for script in /tmp/{1..4}.sh; do
    "$script"
  done
done

true, ((1)), [[ x ]], printf '', eval를 포함하는 작업을 수행하지 않고도 성공적인 명령을 사용할 수 있지만 :이것이 true가장 분명합니다.

C 스타일을 사용할 수도 있습니다.

for ((;;)) {
  for script in /tmp/{1..4}.sh; do
    "$script"
  done
}

/tmp/{1..4}.sh(원래 zsh의 비표준 구문)은 /tmp/1.sh /tmp/2.sh /tmp/3.sh /tmp/4.sh목록을 표현하는 방법입니다. csh 스타일 /tmp/{1,2,3,4}.sh또는 을 사용할 수도 있습니다 /tmp/1.sh /tmp/2.sh /tmp/3.sh /tmp/4.sh. globbing with를 사용하여 어휘 순서로 끝나는 모든 숨김되지 않은 파일 이름으로 확장할 수도 있습니다 /tmp/*.sh. 단, bash에서는 ' glob 한정자나 ' 연산자가 없으면 glob이 Text로 확장되지 않기를 원합니다. 일치하는 항목이 없습니다./tmp.shzsh(N)ksh93~(N)shopt -s nullglob/tmp/*.sh

관련 정보