수색…


변수 할당시 공백

공백은 변수를 지정할 때 중요합니다.

foo = 'bar' # incorrect
foo= 'bar'  # incorrect
foo='bar'   # correct

처음 두 구문 오류가 발생합니다 (또는 더 나쁜, 잘못된 명령을 실행). 마지막 예제는 변수 $foo 를 텍스트 "bar"로 올바르게 설정합니다.

파일의 마지막 줄 누락

C 표준은 파일이 새로운 줄로 끝나야한다고 말합니다. 그래서 EOF가 줄의 끝에 오면, 그 줄은 몇몇 명령에 의해 놓칠 수 없습니다. 예로서:

$ echo 'one\ntwo\nthree\c' > file.txt

$ cat file.txt
one
two
three

$ while read line ; do echo "line $line" ; done < file.txt
one
two

위의 예제에서 제대로 작동하는지 확인하려면 마지막 행이 비어 있지 않으면 루프를 계속 진행하도록 테스트를 추가하십시오.

$ while read line || [ -n "$line" ] ; do echo "line $line" ; done < file.txt
one
two
three

실패한 명령으로 인해 스크립트 실행이 중지되지 않습니다.

대부분의 스크립팅 언어에서 함수 호출이 실패하면 예외가 발생하고 프로그램 실행이 중단 될 수 있습니다. Bash 명령에는 예외가 없지만 종료 코드가 있습니다. 0이 아닌 종료 코드는 실패 신호이지만, 0이 아닌 종료 코드는 프로그램의 실행을 중단시키지 않습니다.

이것은 위험한 (비록 인위적으로는 있지만) 다음과 같은 상황을 초래할 수 있습니다.

#!/bin/bash
cd ~/non/existent/directory
rm -rf *

경우 cd 이 디렉토리에 -ing 실패, 강타는 실패를 무시하고 스크립트를 실행 곳에서 디렉토리를 깨끗하게 닦아, 다음 명령어로 이동합니다.

이 문제를 해결하는 가장 좋은 방법은 set 명령을 사용하는 것 입니다 .

#!/bin/bash
set -e
cd ~/non/existent/directory
rm -rf *

set -e 명령이 0이 아닌 상태를 반환하면 즉시 스크립트를 종료하도록 Bash에 지시합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow