1007 votes

Ce qui « set -e » dans une moyenne de script bash ?

Je suis très nouveau pour les scripts bash et dans Ubuntu\système de paquets Debian.

Aujourd'hui, je suis étudiant le contenu de ce preinst dossier que le script s'exécute avant que le paquet est déballé de son archive Debian (.deb) du fichier.

Mon script a le code suivant:

#!/bin/bash
set -e
# Automatically added by dh_installinit
if [ "$1" = install ]; then
   if [ -d /usr/share/MyApplicarionName ]; then
     echo "MyApplicarionName is just installed"
     return 1
   fi
   rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf
   rm -Rf $HOME/.local/share/file-manager/actions/*
fi
# End automatically added section

Mon poing doute est sur la ligne:

set -e

C'est probablement une question stupide, mais, à l'aide de Google, je ne trouve pas la réponse.

Ensuite, je pense que le script est assez simple:

vérifiez si la Debian\gestionnaire de paquets de Ubuntu est l'exécution d'une opération d'installation, si oui vérifier si ma demande est juste installé sur le système...et dans ce cas, l'impression de la "MyApplicarionName est juste installé" message et à la fin (erturn 1 signifie que la fin avec une "erreur", ou quoi?)

Si l'utilisateur demande à la Debian\Ubuntu système de paquets pour installer mon colis, le script aussi supprimer les 2 répertoires.

Est-il juste ou j'ai loupé quelque chose?

1048voto

sputnick Points 31663

De help set :

   -e  Exit immediately if a command exits with a non-zero status.
 

Mais ce n'est pas très fiable et considéré comme une mauvaise pratique, mieux vaut l'utiliser:

 trap 'do_something' ERR
 

pour exécuter la fonction do_something cas d'erreur.

Voir http://mywiki.wooledge.org/BashFAQ/105

172voto

Robin Green Points 12926

set -e arrête l'exécution d'un script si une commande ou un pipeline contient une erreur - ce qui est le contraire du comportement du shell par défaut, qui consiste à ignorer les erreurs dans les scripts. Tapez help set dans un terminal pour voir la documentation de cette commande intégrée.

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