Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send a string with spaces from Python to Bash sub-process as a single value?

I'm trying to send a variable from a python script to a bash script. I'm using popen like as shown below:

subprocess.Popen(["bash", "-c", ". mainGui_functions.sh %d %s" % (commandNum.get(), entryVal)])

However, entryVal can sometimes contain one or more white space characters. In that case I divide the string into multiple arguments ($2,$3..)

How can i get it in one argument?

like image 876
Ortal Turgeman Avatar asked Jun 29 '26 12:06

Ortal Turgeman


1 Answers

Simple solution #1: You do it the exact same way you'd do it if you were typing the input on the commandline; put it in quotes:

subprocess.Popen(["bash", "-c", ". mainGui_functions.sh {} '{}'".format(commandNum.get(), entryVal)])

Simple solution #2: If mainGui_functions.sh is already executable, then you can just omit the bash part and pas args to it directly. In this case, subprocess takes care of making sure an entry with whitespace winds up as a single arg for you:

subprocess.Popen(["mainGui_functions.sh", str(commandNum.get()), entryVal])
like image 51
aruisdante Avatar answered Jul 02 '26 02:07

aruisdante



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!