bash 소개 기사에서 쉘 스크립트 파일에는 쉘 인터프리터가 실행할 명령 목록이 포함되어 있다는 것을 배웠습니다. 이 기사에서는 셸 명령과 그 내부에 대해 살펴보겠습니다.
명령은 일련의 단어입니다. 첫 번째 단어는 실행할 명령을 나타내고 나머지 단어는 인수로 전달됩니다. 여기서 인수는 명령에 대한 옵션 또는 매개변수가 될 수 있습니다.
명령줄에서 실행하는 일반적인 Unix 명령 중 일부 쉘 명령입니다. 예:ls, lpr 및 grep 명령.
$ ls -alF $ lpr filename $ grep "string" filename
쉘 명령 종료 상태
명령의 반환 값은 종료 상태이거나 명령이 N 신호에 의해 종료된 경우 128 + N입니다. 종료 상태는 명령 실행의 결과(성공/실패)를 확인하는 데 사용됩니다. 종료 상태가 0이면 명령은 성공입니다. 명령이 실패하면 종료 상태는 0이 아닙니다.
종료 값 | 종료 상태 |
---|---|
0(0) | 성공 |
0이 아님 | 실패 |
2 | 잘못된 사용 |
127 | 명령을 찾을 수 없음 |
126 | 실행 파일이 아님 |
$? 쉘 변수
쉘 변수 이름 $? 마지막으로 실행된 명령의 종료 상태를 갖는 특수 내장 변수입니다.
- 쉘 함수 실행 후 $? 함수에서 실행된 마지막 명령의 종료 상태를 반환합니다.
- 셸 스크립트 실행 후 $? 스크립트에서 마지막으로 실행된 명령의 종료 상태를 반환합니다.
셸 명령 종료 상태를 설명하는 샘플 셸 스크립트
다음 exitstatus.sh 쉘 스크립트는 다양한 쉘 명령 종료 상태의 예를 보여줍니다.
$ cat exitstatus.sh #! /bin/bash echo -e "Successful execution" echo -e "=====================" echo "hello world" # Exit status returns 0, because the above command is a success. echo "Exit status" $? echo -e "Incorrect usage" echo -e "=====================" ls --option # Incorrect usage, so exit status will be 2. echo "Exit status" $? echo -e "Command Not found" echo -e "=====================" bashscript # Exit status returns 127, because bashscript command not found echo "Exit status" $? echo -e "Command is not an executable" echo -e "=============================" ls -l execution.sh ./execution.sh # Exit status returns 126, because its not an executable. echo "Exit status" $?
이제 위의 exitstatus.sh를 실행하여 샘플 셸 스크립트에서 제공하는 다양한 종료 상태를 확인합니다.
$ bash exitstatus.sh Successful execution ===================== hello world Exit status 0 Incorrect usage ===================== ls: unrecognized option `--option' Try `ls --help' for more information. Exit status 2 Command Not found ===================== exitstaus.sh: line 15: bashscript: command not found Exit status 127 Command is not an executable ============================= -rw-r--r-- 1 root root 659 Mar 9 13:36 execution.sh exitstatus.sh: line 21: ./execution.sh: Permission denied Exit status 126
참고:함수 또는 명령의 반환 값을 확인하는 것은 프로그래머의 주요 책임 중 하나입니다. 이것은 코드를 작성할 때 제2의 천성이 되어야 합니다.
<센터> 센터>