1부터 50까지의 숫자를 인쇄하세요

1부터 50까지의 숫자를 인쇄하세요
x=1
while [ $x -le 50 ]
do
    echo $x
    $x=(($x + 1))
done

위의 코드를 작성했습니다. 이것은 많은 프로그래밍 언어에서 간단한 작업처럼 보이지만 나에게는 이 오류가 발생했습니다.

solution.sh: line 5: syntax error near unexpected token `('
solution.sh: line 5: `    $x=(($x + 1))'

Bash에서 오류를 디버그하는 방법. IDE가 있나요?

답변1

쉘은 (좋은) 프로그래밍 언어가 아니며, (무엇보다도) 명령줄 해석기입니다. 계산하려면 echo루프에서 및 명령 대신 count 명령을 사용하십시오.[

예를 들어 GNU 시스템에는 seq이러한 명령이 있습니다. 대안은 다음 awkbc같습니다.

seq 50
echo 'for (i=1; i<=50; i++) i' | bc
awk 'BEGIN {for (i=1; i<= 50; i++) print i}'

쉘에서 루프를 사용하고 있다면 아마도 잘못된 방식으로 수행하고 있을 것입니다.

답변2

1부터 50까지의 숫자를 인쇄하세요

printf '%s\n' {1..50}

1-50 사이의 숫자를 2단계로 인쇄합니다(bash 4+):

printf '%s\n' {1..50..2}

답변3

5행: $x=(($x + 1))로 변경합니다 x=$(($x + 1)).

그냥 사용해도 됩니다 seq 1 50.

그렇다면 2가 단계/증분을 의미하는 경우를 x=$(($x + 2))사용할 수 있습니다 .seq 1 2 50

답변4

라는 소프트웨어가 있습니다.BASH 디버거다른 소프트웨어는주택 검사이렇게 하면 일반적인 오류가 발생하지만 전부는 아닙니다.

스크립트의 5번째 줄에 대괄호를 사용하세요.

x=$[ $x + 1 ]

고쳐 쓰다

또는

x=$(( $x + 1 ))

전자는 더 이상 사용되지 않으며 후자를 사용하는 것이 더 좋습니다. 기호 앞에 나타나는 $앞에는 사용하지 마십시오.x=

관련 정보