Search code examples
pythonbashshellscriptingexit-code

Running a Python script within shell script - Check status


Within my shell script I run this command:

python script.py

I was wondering, as a two part question:

  1. How can I program my python script to pass a status back to the shell script that ran it depending on what happens in the python script. For example if something goes wrong in the python script have it exit with a code of 1 which is sent back to shell.

  2. How can I get my shell script to read the exit code of python and exit for an error? For example, a status code of anything but 0 then exit.


Solution

  • First, you can pass the desired exit code as an argument to sys.exit in your python script.

    Second, the exit code of the most recently exited process can be found in the bash parameter $?. However, you may not need to check it explicitly:

    if python script.py; then
        echo "Exit code of 0, success"
    else
        echo "Exit code of $?, failure"
    fi
    

    To check the exit code explicitly, you need to supply a conditional expression to the if statement:

    python script.py
    if [[ $? = 0 ]]; then
        echo "success"
    else
        echo "failure: $?"
    fi