Read Bash variables into a Python script Read Bash variables into a Python script python python

Read Bash variables into a Python script


You need to export the variables in bash, or they will be local to bash:

export test1

Then, in python

import osprint os.environ["test1"]


There's another way using subprocess that does not depend on setting the environment. With a little more code, though.

For a shell script that looks like follows:

#!/bin/shmyvar="here is my variable in the shell script"function print_myvar() {    echo $myvar}

You can retrieve the value of the variable or even call a function in the shell script like in the following Python code:

import subprocessdef get_var(varname):    CMD = 'echo $(source myscript.sh; echo $%s)' % varname    p = subprocess.Popen(CMD, stdout=subprocess.PIPE, shell=True, executable='/bin/bash')    return p.stdout.readlines()[0].strip()def call_func(funcname):    CMD = 'echo $(source myscript.sh; echo $(%s))' % funcname    p = subprocess.Popen(CMD, stdout=subprocess.PIPE, shell=True, executable='/bin/bash')    return p.stdout.readlines()[0].strip()print get_var('myvar')print call_func('print_myvar')

Note that both shell=True shall be set in order to process the shell command in CMD to be processed as it is, and set executable='bin/bash' to use process substitution, which is not supported by the default /bin/sh.


Assuming the environment variables that get set are permanent, which I think they are not. You can use os.environ.

os.environ["something"]