이상한 오류가 발생했습니다.
#!/bin/bash
echo "Please enter a number"
read var
declare -i num
num=0
while ($num<$var)
do
echo "$num"
done
./loop: 5행: 6: 해당 파일이나 디렉터리가 없습니다.
내가 뭘 잘못했나요?
답변1
(...)
서브쉘을 시작하고 그 안에서 지정된 명령을 실행합니다. 이것이 ($num<$var)
오류 메시지가 생성되는 이유입니다. $var
해당 명령에 전달할 해당 파일을 찾을 수 없습니다 $num
.
당신은 다음과 같은 것을 원할 수도 있습니다
while (( num < var )); do
echo "$num"
done
((...))
산술 확장입니다. 내부 표현을 평가합니다. 이 경우 두 변수의 값을 비교합니다( $
이전 변수는 여기서 필요하지 않습니다). 비교가 참이면 while 루프는 한 번 더 반복을 실행합니다.
while 루프는 증가 num
도 감소도 하지 않기 때문에 무한 루프이기도 합니다 var
.
마지막으로 시도해 볼 수도 있습니다.
for (( num = 0; num < var; ++num )); do
echo "$num"
done
또는
for (( num = 0; num < var; ++num )); do
printf '%d\n' "$num"
done
C나 C와 유사한 구문을 사용하는 언어를 알고 있다면 이러한 유형의 for 루프를 인식할 것입니다.