과연 스크립트가 자신을 재귀적으로 부를 수 있을까요?
예 34-6. 자신을 재귀적으로 부르는 스크립트
#!/bin/bash # recurse.sh # 스크립트가 자신을 재귀적으로 부를 수 있을까요? # 부를 수 있지만, "개념 증명"(proof of concept) 따위의 쓰임새가 아니라면, #+ 전혀 실용적이지 않습니다. RANGE=10 MAXVAL=9 i=$RANDOM let "i %= $RANGE" # 0 에서 $MAXVAL 사이의 랜덤한 숫자 만들기. if [ "$i" -lt "$MAXVAL" ] then echo "i = $i" ./$0 # 스크립트는 자기 자신의 새 인스턴스를 #+ 재귀적으로 만들어 냅니다. # 만들어내 $i 가 $MAXVAL 과 같을 때까지 #+ 각 자식 스크립트도 똑같은 동작을 합니다. # "if/then" 대신 "while" 루프를 쓰면 문제가 생깁니다. # 독자들을 위한 연습문제: 왜 문제가 생길까요? exit 0 |
경고 |
재귀가 너무 많이 일어나면 스크립트의 스택 영역을 다 써버리기 때문에 세그폴트가 납니다. |