KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
set -e (or a script starting with #!/bin/sh -e ) is extremely useful to automatically bomb out if there is a problem. It saves me having to error check every single command that might fail. How do I get the equivalent of this inside a function? For example, I have the following script that exits immediately on error with an error exit status: #!/bin/sh -e echo "the following command could fail:" false echo "this is after the command that fails" The output is as expected: the following command could fail: Now I'd like to wrap this into a function: #!/bin/sh -e my_function() { echo "the following command could fail:" false echo "this is after the command that fails" } if ! my_function; then echo "dealing with the problem" fi echo "run this all the time regardless of the success of my_function" Expected output: the following command could fail: dealing with the problem run this all the time regardless of the success of my_function Actual output: the following output could fail: this is after the command that fails run this all the time regardless of the success of my_function (ie. the function is ignoring set -e ) This presumably is expected behaviour. My question is: how do I get the effect and usefulness of set -e inside a shell function? I'd like to be able to set something up such that I don't have to individually error check every call, but the script will stop on encountering an error. It should unwind the stack as far as is needed until I do check the result, or exit the script itself if I haven't checked it. This is what set -e does already, except it doesn't nest. I've found <a href="http://www.unix.com/shell-programming-scripting/114716-strange-behaviour-set-e-functions.html"
Tags (comma-separated)
Save Edits
Cancel