Search code examples
pythonshellargvsys

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


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