source un script shell à partir d'un autre script et vérifier le code retour
Je veux de la source d'un fichier par exemple name.sh à partir d'un autre script et vérifier le code de retour et de décider sur le code d'erreur. Si j'utilise
source name.sh
alors si name.sh de retour de retour non nul code de mon script principal s'arrêter de courir, mais j'ai besoin de décider sur le code de sortie de la météo de continuer ou d'arrêter.
Si j'utilise
ret_code="`source name.sh`"
echo $ret_code
puis ret_code est nulle et aucun code d'erreur est imprimé.
Je ne peux pas utiliser ces:
sh name.sh
./name.sh
bash name.sh
parce que name.sh n'est pas exécutable et je ne veux pas qu'il soit exécutable
source d'informationauteur amin
Vous devez vous connecter pour publier un commentaire.
Fichier n'a pas besoin d'être exécutable à exécuter
sh name.sh
. Que d'utiliser$?
.Le code de retour doit être dans la variable
$?
. Vous pouvez effectuer les opérations suivantes:Amin, la valeur de retour de name.sh est tout simplement la valeur de retour de la dernière commande exécutée. Accéder à l'aide de
$?
comme d'habitude.L'approche la plus simple à la capture d'un code de retour est de structure "name.sh" alors que l'échec de commandes entraînent pas plus de commandes exécutées (qui peut réussir, puis masque le message d'erreur). Puisque vous utilisez bash, vous pouvez également utiliser les fonctions. Il suffit de déplacer votre logique dans une fonction et de l'appeler. De cette façon, votre
name.sh
devient un one-liner et la valeur de$?
seront celles que le retour de la fonction.Par exemple:
Cependant, si vous mettez votre logique dans une fonction, alors vous pourriez aussi bien la source du fichier, et ensuite appeler la fonction à vos loisirs.