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
이러한 명령이 있습니다. 대안은 다음 awk
과 bc
같습니다.
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