오류 발생 시 쉘 스크립트를 종료하고 사용자에게 메시지를 보내는 방법은 무엇입니까?

오류 발생 시 쉘 스크립트를 종료하고 사용자에게 메시지를 보내는 방법은 무엇입니까?

쉘 스크립트 파일이 있습니다 /bin/foo.

오류 발생 시 쉘 스크립트를 종료하고 사용자에게 메시지를 보내는 방법은 무엇입니까?

단순히 a를 사용하면 set -e오류가 발생하면 종료되지만 STDOUT으로 메시지를 보내거나 메일을 보내는 등 오류가 발생하면 명령이 실행되지 않습니다.

질문: 쉘 스크립트 실행 시 오류가 발생한 경우 명령을 어떻게 실행합니까?

SLES12, 배쉬.

답변1

사용자에게 메시지를 보내고 trap스크립트가 오류로 종료될 때 실행되도록 하는 함수를 만들 수 있습니다.

#!/bin/bash

set -e

on_exit () {
    echo "This script has exited in error"
}

trap on_exit ERR

echo 'yes' | grep "$1"

사용:

$ ./script.sh yes
yes
$ ./script.sh no
This script has exited in error

답변2

이전 sh에서도 작동하도록 하려면(bash에서만):

#!/bin/sh
set -e
trap 'test $? -gt 0 && echo "This script has exited in error" >&2' 0

echo 'yes' | grep "$1"

관련 정보