Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

As others mentioned, you must ALWAYS use '--' to mark the end of option processing when you do something like this.

Relatedly, GNU getopt() (the most common one in use) has a dubious and non-standard "feature" --- enabled by default --- where it will automatically reorder the option arguments to come before the non-option ones. In other words, if you use it with something like

    foo -a -b somearg $input
according to POSIX there cannot possibly be any more options after somearg, and thus you can't inject any options via $input, but GNU will reorder them and pick up options from there too. Fortunately it respects --, but this feature has personally caused me some grief in the past, and while it sounds intuitive at first, it actually complicates things because it violates the "left-to-right"-ness of (mentally or otherwise) parsing a command line.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: