Sign up ×
Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute:

How can I check the exit code of a command substitution in bash if the assignment is to a local variable in a function?
Please see the following examples. The second one is where I want to check the exit code.
Does someone has a good work-around or correct solution for this?

$ function testing { test="$(return 1)"; echo $?; }; testing
1
$ function testing { local test="$(return 1)"; echo $?; }; testing
0
share|improve this question

1 Answer 1

up vote 26 down vote accepted

If you look at the man file for local (which is actually just the BASH builtins man page), it is treated as its own command, which gives an exit code of 0 upon successfully creating the local variable. So local is overwriting the last-executed error code.

Try this:

function testing { local test; test="$(return 1)"; echo $?; }; testing

EDIT: I went ahead and tried it for you, and it works.

share|improve this answer
    
Thanks, like always, right after I posted my question I found the answer myself which comes out as the same you suggest. I just have too less of a reputation to answer my own questions before 8 hours have passed. But man local gives me the man page of LOCAL(8postfix) manpage, so not too useful. But I found it on mywiki.wooledge.org/… – Vampire Mar 2 '12 at 6:09
    
Another source of information would be man bash. local is mentioned under the "SHELL BUILTIN COMMANDS" section. – Victor Zamanian Feb 18 '13 at 18:12

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.