for 루프의 루프 변수 오류


10

내가 좋아할 때

 for i in 1 2 3 4 5 

내 파일 #!/bin/sh이 맨 위에 있습니다.

하지만 내가 사용할 때

for(( i = 0; i<=5; i++))

그런 다음 오류가 표시됩니다

Syntax error: Bad for loop variable

shebang을 제거하면 제대로 작동합니다. 이것 뒤에 이유를 말해주세요.

답변:


11

for(( i = 0; i<=5; i++))Bash 전용이며 일반 Bourne 쉘 ( /bin/sh)에서 작동하지 않습니다 .

shebang을 제거하면 스크립트가 현재 쉘 (Bash 일 가능성이 있음)에 의해 실행되므로 작동합니다.

교체 #!/bin/sh#!/bin/bash오두막 작업을 할 수 있습니다.


sh모드 에서 할 수있는 방법이 있습니까? 감사!
Ziyaddin Sadigov

2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch 2014

1
#bash를 이미 사용했지만 작동하지 않습니다.
BG Bruno

2
for(( i = 0; i<=5; i++))

이 유형의 루프는 Bash 쉘에서만 실행됩니다. 따라서 이것을 실행하려면 다음 명령을 시도하십시오.

$bash filename.sh

나는 그것이 잘 작동 할 것이라고 생각합니다. 이것도 참조하십시오 .


1

sh 명령 대신 ./를 사용 하여이 문제를 해결했습니다. 예를 들어 sh test.sh대신 대신 명령을 내리면 ./test.sh문제가 해결됩니다.


0

이것을 시도하면 문제를 해결할 수 있습니다.

#!/bin/bash
j=0
for (( i=1; i <= 5; i++ ))
do
 echo "the loop is runing $i time: and value of j is $j"
 j=`expr $j + 1`
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.