Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

실제 예제가 포함된 Bash Shell 종료 상태 자습서

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의 천성이 되어야 합니다.

<센터>