86 votes

Dans bash, existe-t-il un équivalent de die "error msg"

En perl, vous pouvez sortir avec un message d'erreur avec die "some msg" . Existe-t-il une commande unique équivalente dans bash ? En ce moment, j'y arrive en utilisant les commandes : echo "some msg" && exit 1

91voto

Keith Thompson Points 85120

Vous pouvez rouler le vôtre assez facilement :

 die() { echo "$*" 1>&2 ; exit 1; }
...
die "Kaboom"

33voto

tripleee Points 28746

Voici ce que j'utilise. C'est trop petit pour être mis dans une bibliothèque donc j'ai du le taper des centaines de fois...

 warn () {
    echo "$0:" "$@" >&2
}
die () {
    rc=$1
    shift
    warn "$@"
    exit $rc
}

Utilisation : die 127 "Syntax error"

0voto

YordanGeorgiev Points 1222
# echo pass params and print them to a log file
wlog(){
    # check terminal if exists echo 
    test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*"
    # check LogFile and 
    test -z $LogFile || {
      echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*" >> $LogFile
    } #eof test
 } 
# eof function wlog 


# exit with passed status and message
Exit(){
    ExitStatus=0
    case $1 in
      [0-9]) ExitStatus="$1"; shift 1;;
  esac
    Msg="$*"
    test "$ExitStatus" = "0" || Msg=" ERROR: $Msg : $@"
    wlog " $Msg"
    exit $ExitStatus
}
#eof function Exit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X