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

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

쉘 스크립트 파일이 있습니다 /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

(bash 대신) 이전 sh에서도 작동하도록 하려면 다음을 수행하세요.

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

echo 'yes' | grep "$1"

관련 정보