![Bash에서 재귀 함수의 매개변수에 대해 다른 값을 전달하시겠습니까? [폐쇄]](https://linux55.com/image/84014/Bash%EC%97%90%EC%84%9C%20%EC%9E%AC%EA%B7%80%20%ED%95%A8%EC%88%98%EC%9D%98%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EC%97%90%20%EB%8C%80%ED%95%B4%20%EB%8B%A4%EB%A5%B8%20%EA%B0%92%EC%9D%84%20%EC%A0%84%EB%8B%AC%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
다음과 같은 것이 있다고 가정해 보겠습니다.
n=10
function decrement {
if [ $n -eq 0 ]; then
echo recurse_done
else
echo $n
decrement $(( $n-1 ))
fi
}
decrement n
위의 내용은 무한 호출을 생성합니다감소기능이 n
저하되지 않습니다. 여기저기 검색해보니 function $(( some_arithemtic_operation ))
안되는거 같던데..
답변1
함수에 전달할 매개변수를 결정해야 합니다. 변수입니까?이름또는값?
이름인 경우 간접 변수 확장이 필요합니다.
function decrement {
local var=$1
if [[ ${!var} -eq 0 ]]; then
echo recurse_done
else
echo ${!var}
declare "$var=$(( ${!var} - 1))"
decrement $var
fi
}
decrement n
그것이 가치라면 당신의 삶은 더 단순해질 것입니다
function decrement {
local value=$1
if [[ $value -eq 0 ]]; then
echo recurse done
else
echo $value
decrement $((value-1))
fi
}
decrement $n
그런데 왜 이것이 재귀적일까요? seq $n -1 1
$n에서 1까지 카운트다운됩니다.