Calling a python function from bash script

Viewed 48391

I have an "alarm email" function inside a python module. I want to be able to call this function from a bash script. I know you can call a module using 'python ' in the script, but I'm not if you can or how you would call a specific function within the module.

4 Answers
python -c'import themodule; themodule.thefunction("boo!")'

You can use the -c option:

python -c "import random; print random.uniform(0, 1)"

Modify as you need.

To call a specific function in a module, assure that the module has the following:

if __name__ == "__main__":
    the_function_to_call( )

Then you can simply do this in your shell script.

python module.py

Or

python -m module

Depending on whether or not the module's on the PYTHONPATH.

To supplements others' answers with two notes:

  1. If you need to feed environment variables as parameters, use double quotes;
  2. The parameters are not necessarily str.

Here is an example:

# test.py
def call(param):
    print(f'{param} with type={type(param)}')

print('hi')

Execute from shell:

PARAM=10
python3 -c "import test; test.call(${PARAM})"

You can read:

hi
10 with type=<class 'int'>
Related