GRASS GIS의 CLI에서 이 쉘 스크립트를 호출하려고 합니다.
for (( day=5; day<367; day+5 )); do
# commands that I've tested without a loop.
done
exit 0
반품
Syntax error: Bad for loop variable
답변1
이 오류 메시지의 출처는 다음과 같습니다.금연 건강 증진 협회. 비슷한 구문을 가진 여러 쉘이 있습니다. Ash는 작은 메모리 공간과 빠른 실행을 위해 설계된 비교적 기본적인 디자인입니다. 또 다른 일반적인 껍질은불다. Bash에는 더 많은 기능이 있습니다. 게시한 구문은 bash(및 일부 다른 쉘(ash는 제외))에만 존재합니다.
재에는 다음과 같이 작성해야 합니다.
day=5
while [ $day -lt 367 ]; do
…
day=$((day + 5))
done
Linux 배포판에 따라 /bin/sh
이는 ash 또는 bash입니다(일부 이국적인 버전은 다른 구현을 사용할 수 있음). bash 구문을 사용하여 스크립트를 작성하는 경우 해당 구문을 #!/bin/bash
맨 위에 배치하세요 .
당신이 그것을 쓴 곳을 의미한다고 가정하면 , 그렇지 않으면 무한 루프입니다.day+=5
day+5
답변2
어쩌면 GRASS GIS가 "day"라는 변수를 미리 정의했을 수도 있습니다.
그런데 이 코드는 direct bash에서는 작동하지 않습니다. 실제로 "일"의 가치는 증가하지 않습니다.
#!/bin/bash
for (( day=5; day<367; day=day+5 )); do
# commands that I've tested without a loop.
echo $day
done
exit 0
이것은 RHEL 5.0 서버에서 bash 2.05b를 사용하여 나에게 효과적이었습니다.