Saturday, June 4, 2022

[SOLVED] How to pass a string variable from shell script to python with sys.argv?

Issue

I would like to pass a string variable from a Shell Script to my python script and have it stored in sys.argv[1]. Currently, this is my situation:

main.sh

TEST="This is a test"
python main.py $TEST

main.py

if __name__ == '__main__':
     print(sys.argv[1])

result:

This

How do I send $TEST so that sys.argv[1] = "This is a test"? I don't want to have to reconstruct the String after sending it.


Solution

Edit your main.sh to following :

TEST="This is a test"
python main.py "${TEST}"

Variable needs to expanded inside "" and will be transformed into its value.

main.py

if __name__ == '__main__':
     print(sys.argv[1])

Result:

This is a test


Answered By - Januka samaranyake
Answer Checked By - Terry (WPSolving Volunteer)