Currently I'm writing a Bash script which has the following requirements:
- it should run on a wide variety of Unix/Linux platforms
- it should support both short and (GNU) long options
I know that getopts
would be the preferred way in terms of portability but AFAIK it doesn't support long options.
getopt
supports long options but the BashGuide recommends strongly against it:
Never use getopt(1). getopt cannot handle empty arguments strings, or arguments with embedded whitespace. Please forget that it ever existed.
So, there still is the option of manual parsing. This is error-prone, produces quite some boilerplate code, and I need to handle errors by myself (I guess getopt(s)
do error-handling by themselves).
So, what would be the preferred choice in this case?
getopts
supports long options. You need to use the Korn Shell or the Bourne Shell.