How do I go about running a bash script using the subprocess module, to which I must give several arguments?
This is what I'm currently using:
subprocess.Popen(['/my/file/path/programname.sh', 'arg1 arg2 %s' % arg3], \
shell = True)
The bash script seems not to be taking any of the parameters in. Any insights are greatly appreciated!
Pass arguments as a list, see the very first code example in the docs:
If
arg3
is not a string; convert it to string before passing tocheck_call()
:arg3 = str(arg3)
.Hi I know that this is solution is quite late, but could help someone.
example:
The above example provides arg1 and arg2 as parameters to the shell script test.sh
Essentially, subprocess expects an array. So you could populate an array and provide it as a parameter.
If you use
shell = True
the script and its arguments have to be passed as a string. Any other elements in theargs
sequence will be treated as arguments to the shell.You can find the complete docs at http://docs.python.org/2/library/subprocess.html#subprocess.Popen.
You forgot to add
args
name.One more example, which is not included in all the above ones,
subprocess.Popen(['/your/script.sh %s %s %s' %(argument1,argument2,argument3)], shell = True)
Please note that, when you type
%(argument1,argument2,argument3)
, there should not be any space between%
and(
, eg% (argument1,argument2,argument3)
is not valid.