Pass variable from Python to Bash

  1. Unless Python is used to do some kind of operation on the original data, there's no need to import anything. The answer could be as lame as:

    myvar=$(python - <<< "print 'second'") ; echo $myvar
    
  2. Suppose for some reason Python is needed to spit out a bunch of bash variables and assignments, or (cautiously) compose code on-the-fly. An eval method:

    myvar=first
    eval $(python - <<< "print('myvar=second')" )
    echo $myvar
    

Complementing the useful Cyrus's comment in question, you just can't do it. Here is why,

Setting an environment variable sets it only for the current process and any child processes it launches. os.environ will set it only for the shell that is running to execute the command you provided. When that command finishes, the shell goes away, and so does the environment variable.

You can pretty much do that with a shell script itself and just source it to reflect it on the current shell.

Tags:

Python

Bash