가변적인 반복 횟수를 사용하여 for 루프를 만드는 방법은 무엇입니까?

가변적인 반복 횟수를 사용하여 for 루프를 만드는 방법은 무엇입니까?

사용자가 처음에 n을 지정할 때 루프를 n번 반복하는 방법은 무엇입니까?

나는 (사용자가 원하는 횟수에 따라) 특정 부분을 n번 반복해야 하는 쉘 스크립트를 작성했습니다.

지금까지 내 스크립트는 다음과 같습니다.

echo "how many times would you like to print Hello World?"
read num
for i in {1.."$num"}
do
echo "Hello World"
done

"num"을 "5"와 같은 숫자로 변경하면 루프가 작동하지만 사용자가 루프를 반복할 횟수를 지정할 수 있어야 합니다.

답변1

당신은 그것을 사용할 수 있습니다seq

for i in $(seq 1 "$num") 

또는 쉘이 bash와 같은 C 스타일 루프를 지원할 수 있습니다.

for ((i=0; i<$num; i++))

답변2

echo "how many times would you like to run your loop ?"
read  max

i=0
while [ "$((i+=1))" -le "$max" ]
do
   # whatever you want to do here
done

답변3

"산술 평가"를 사용하십시오(bash에만 해당):

read -p "how many times would you like to print Hello World? " max

i=0
while  (( i++ < max ))
do
   echo "$i, Hello World."
done

또는 프로그램을 더욱 강력하게 만들고 싶다면 이를 사용하십시오.
그러면 입력에서 숫자만 추출됩니다. 처리하는 데 시간이 오래 걸릴 수 있는 매우 큰 숫자를 제외하고 다른 모든 입력은 사용하기 전에 삭제됩니다.

while (( i++ < ${max//[^0-9]} ))

답변4

에는 또 다른 방법이 있습니다 {1.."$num"}. Bash 확장은 for 루프로 전송하기 전에 평가되어야 합니다. 다음과 같은 방법으로 확장 구문을 사용하여 작동하게 할 수 있습니다.

for i in $(eval echo {1.."$num"}); 
do 
 echo $i; 
done

관련 정보