readConfig() {
echo "file not found" >&2
return 3
}
loadSettings() {
#local and the assignment go apart:
#$? after local message=$( ) is the code of local, always 0
local message
message=$(readConfig 2>&1) || {
local code=$?
#any partial processing, then the error goes up
#with the same code and a longer message
echo "loadSettings: $message" >&2
return "$code"
}
}
code=0
message=$(loadSettings 2>&1) || code=$?
#message is "loadSettings: file not found"
#code is 3
echo "message is $message"
echo "code is $code"