Bash에서 숫자를 비교할 때 "해당 파일이나 디렉터리가 없습니다"

Bash에서 숫자를 비교할 때 "해당 파일이나 디렉터리가 없습니다"

이상한 오류가 발생했습니다.

#!/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 루프를 인식할 것입니다.

관련 정보