Reputation: 3
I'm trying to transfer a variable in a bash-script to an embedded python-function. A minimal example of the script I'm using is given below:
#!/bin/bash
function python_print() {
PYTHON_ARG="$1" python - <<END
import os
p = str(os.environ['PYTHON_ARG'])
print('The Variable is ' + p)
END
}
DIRIN=$1
FULLPATH=$ realpath $OUTFILE
python_print $FULLPATH
Running the script gives me: "The variable is "; so it seems the argument FULLPATH is not transfered to the function. The strange thing is, the code works if "$FULLPATH" is replaced either with "$1", "$DIRIN" or any hardcoded string. Where is my mistake? I'm grateful for any advice!
Upvotes: 0
Views: 159
Reputation: 19315
The problem is not in python_print function (note that function
keyword is redundant with ()
). but in FULLPATH assignment and function call
correct syntax
FULLPATH=$(realpath "$OUTFILE")
python_print "$FULLPATH"
=
and value in assignment[[
]]
note that
FULLPATH=$ realpath $OUTFILE
is not affecting FULLPATH in current shell process environment, it just sets FULLPATH to $
to realpath execution process environment also output is not captured.
Upvotes: 1
Reputation: 11454
Just either:
export
your bash variable so it is available in os.environ
sys.argv
Upvotes: 0