On Wed, Nov 26, 2014, at 01:04, Tim Daneliuk wrote: > In this case, I am not trying to write a fullblown language or recover > from syntax errors. Here's a usecase - I want to know whether I need > to use a sudo password when the user passes a command on the command line > of a program: > > someprog.py uname && sudo cat /etc/sudoers > > vs. > > someprog.py uname && echo "sudo cat /etc/suoders" > > > In the first instance, I need the sudo passoword, in the second I don't.
I think first you need to understand how the command line works. Much of this parsing - including both && and quotes - is handled by the shell before your program ever sees it. Imagine someprog.py is this very simple program: import sys print("%r" % (sys.argv,)) $ someprog.py uname ['someprog.py', 'uname'] $ someprog.py uname && sudo cat /etc/sudoers ['someprog.py', 'uname'] Password: {sudo executed independent of your program} $ someprog.py uname && echo "sudo cat /etc/sudoers" ['someprog.py', 'uname'] sudo cat /etc/sudoers {echo executed independent of your program} $ someprog.py uname "&&" sudo cat /etc/sudoers ['someprog.py', 'uname', '&&', 'sudo', 'cat', '/etc/sudoers'] $ someprog.py uname "&&" echo "sudo cat /etc/sudoers" ['someprog.py', 'uname', '&&', 'echo', 'sudo cat /etc/sudoers'] $ someprog.py 'uname && echo "sudo cat /etc/sudoers"' ['someprog.py', 'uname && echo "sudo cat /etc/sudoers"'] -- https://mail.python.org/mailman/listinfo/python-list