안녕하세요. 저는 Ubuntu 19.10을 사용하고 있으며 bash 버전은 5.0.3(1) 릴리스입니다. 스크립트를 작성하려고 합니다. 내 bash를 확인했습니다.어느 강타명령과 반환은 다음과 같습니다/usr/bin/bash그래서 스크립트의 첫 번째 줄에 넣습니다.
#!/usr/bin/bash
declare -i n = 1
while [ $n <= 99 ]
do
echo $n
n = $((n+2))
done
실행하려고 하면 두 가지 오류가 발생합니다. test.sh:2: 명령문: 찾을 수 없음그리고test.sh: 3: 열 수 없습니다=: 해당 파일이 없습니다
답변1
스크립트 변경을 고려해야 할 네 가지 사항이 있습니다. 그 중 두 가지는 구문과 관련되어 있습니다.
- 과제 주변에는 공백이 없어야 합니다
=
. 두 곳에서 이 오류가 발생했습니다. - 작거나 같은 산술 테스트를 수행하려면 ,
-lt
not 을 사용하십시오<=
. 이는<=
이름이 지정된 파일의 입력 리디렉션입니다=
. 여기서 "no such file
" 오류가 발생합니다.
나머지 두 개는 다음과 같습니다.
- 항상 큰따옴표가 확장됩니다. . 대신
echo "$n"
orprintf '%s\n' "$n"
대신echo $n
사용하십시오[ "$n" -lt 99 ]
.[ $n -lt 99 ]
일반적으로 쉘은 변수 값을 단어로 분할하고 각 단어에 파일 이름 글로빙 규칙을 적용합니다. - 여기서는 필요하지 않습니다
declare -i
.bash
변수를 정수로 선언해야 하는 경우는 거의 없습니다.
declare not found
또한 " " 오류가 발생하므로 bash
스크립트를 실행 가능하게 만드는 것을 고려하십시오.아니요스크립트를 실행할 때 명령줄에 명시적 해석기를 지정합니다(이렇게 하면 해당 #!
줄이 적용됩니다).
또한보십시오:
- 언제 큰따옴표가 필요합니까?
- 이것https://www.shellcheck.net/이 웹사이트는 쉘 스크립트 구문을 확인하는 데 유용합니다.