n1과 n2 사이의 소수를 인쇄하려고 하는데 여기서 출력이 나오지 않는 이유는 무엇입니까?

n1과 n2 사이의 소수를 인쇄하려고 하는데 여기서 출력이 나오지 않는 이유는 무엇입니까?
echo A program to print primes between 2 numbers
read -p "Enter starting number of range: " n1
read -p "Enter ending number of range: " n2
echo ""
if [ $n1 -le $n2 ]
then
    while [ $n1 -le $n2 ]
    do
        d=2
        while [ $d -lt $n1 ]
        do
            if [ $((n1%d)) -eq 0 ]
            then
                break
            fi
        if [ $d -eq $n1 ]
        then
            echo Prime: $d
        fi
        d=$((d+1))
        done
    n1=$((n1+1))
    done
else
    echo First number must be smaller than second number
    exit
fi

답변1

프로그램을 올바르게 들여쓰기했다면 오류가 더 분명해질 것입니다.

코드

        if [ $d -eq $n1 ]
        then
            echo Prime: $d
        fi

은 루프 내부에 있으므로 해당 루프의 맨 끝에 있는 while [ $d -lt $n1 ]것처럼 실행되지 않습니다 .d=$((d+1))

관련 정보