I know that set -e
is my friend in order to exit on error. But what to do if the script is sourced, e.g. a function is executed from console? I dont want to get the console closed on error, I just want to stop the script and display the error-message.
Do I need to check the $? of each command by hand to make that possible ?
Here an example-script myScript.sh
to show the problem:
#!/bin/sh
set -e
copySomeStuff()
{
source="$1"
dest="$2"
cp -rt "$source" "$dest"
return 0
}
installStuff()
{
dest="$1"
copySomeStuff dir1 "$dest"
copySomeStuff dir2 "$dest"
copySomeStuff nonExistingDirectory "$dest"
}
The script is used like that:
$ source myScript.sh
$ installStuff
This will just close down the console. The error displayed by cp
is lost.
cp
error and exiting with 1 exit code. – ddnomad yesterdayset -e
sets theerrexit
option in the shell. When calling the function, thecp
fails and the shell exits for me. – Kusalananda yesterday#!
and will applyset -e
to the calling shell, so will apply to all subsequent commands. – richard yesterday()
when calling shell functions. – Kusalananda yesterday