cknoll
cknoll

Reputation: 2492

How to execute multiline python code from a bash script?

I need to extend a shell script (bash). As I am much more familiar with python I want to do this by writing some lines of python code which depends on variables from the shell script. Adding an extra python file is not an option.

result=`python -c "import stuff; print('all $code in one very long line')"` 

is not very readable.

I would prefer to specify my python code as a multiline string and then execute it.

Upvotes: 25

Views: 12194

Answers (2)

cknoll
cknoll

Reputation: 2492

Tanks to this SO answer I found the answer myself:

#!/bin/bash

# some bash code
END_VALUE=10

PYTHON_CODE=$(cat <<END
# python code starts here
import math

for i in range($END_VALUE):
    print(i, math.sqrt(i))

# python code ends here
END
)

# use the 
res="$(python3 -c "$PYTHON_CODE")"

# continue with bash code
echo "$res"

Upvotes: 8

Barmar
Barmar

Reputation: 780879

Use a here-doc:

result=$(python <<EOF
import stuff
print('all $code in one very long line')
EOF
)

Upvotes: 28

Related Questions