I’m trying to understand how to access from a bash script the return value of a python script.
Clarifying through an example:
foo.py
def main(): print ("exec main..") return "execution ok" if __name__ == '__main__': main()
start.sh
script_output=$(python foo.py 2>&1) echo $script_output
If I run the bash script, this prints the message “exec main..”.
How can I store in script_output the return value (execution ok)? If I direct execution ok to stdout, the script_output will capture all the stdout (so the 2 print statement).
Is there any way to implement this?
Thanks! Alessio
Advertisement
Answer
Add a proper exit code from your script using the sys.exit()
module. Usually commands return 0 on successful completion of a script.
import sys def main(): print ("exec main..") sys.exit(0)
and capture it in shell script with a simple conditional. Though the exit code is 0 by default and need not be passed explicitly, using sys.exit()
gives control to return non-zero codes on error cases wherever applicable to understand some inconsistencies with the script.
if python foo.py 2>&1 >/dev/null; then echo 'script ran fine' fi