In solving problems, I find it most useful to search for solutions before inventing my own. I keep a list of notes and sources for command-line-processing, posted below. You may want to consider items 4 and 5 below, neither of which is trivial to use. However, because of your requirement to run on all shells, I think you will probably have to do your own processing with the lowest common denominator features of the Bourne shell -- no additional features such as found on bash, ksh, zsh, etc. Of course, you could choose the most-feature-rich shell, possibly zsh or pwsh, and write simple driver scripts for the other shells, provided you can install zsh / pwsh on all systems that you need. The perl modules have extensive support for command-line options, so one could write a perl code that processed arguments, and then have the perl code call a vanilla shell script with simple arguments.
Good luck, I'd be interested in how you solve this ... cheers, drl
Code:
Process command-line (CLI) options, arguments
1) getopts, builtin, bash, ksh, zsh
http://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get-long-and-short-command-line-options
Also, search for option processing, including:
http://mywiki.wooledge.org/ComplexOptionParsing
2) perl: many, including libgetopt-euclid-perl, which
creates man page, help automatically
3) getopt, enhanced getopts, part of the util-linux, allows GNU "--"
Examples: /usr/share/doc/util-linux/examples, 2016.03.27
4) argp.sh, wrapper for getopt, creates man and help (text, XML), etc.
Allows mixed options and arguments.
Compiled argp.c -> argp for faster execution.
https://sourceforge.net/projects/argpsh/, 2016.03.27
5) shflags, wrapper for getopt, creates help, allow mixed options
and arguments
https://github.com/kward/shflags, 2016.08.01
6) ksh getopts, enhanced, process GNU "--", creates man, help, etc.
Examples: Learning the Korn Shell, O'Reilly, 2nd, p 380ff
7) zsh zparseopts
man zshmodules, part of zshutil
8) getopts_long.sh, a getopts that supports long options à la GNU for POSIX
shells
http://stchaz.free.fr/getopts_long.sh
9) Suggested option names:
http://www.shelldorado.com/goodcoding/cmdargs.html#flagnames
Hi,
while compiling my c++ program, I get the following Message:
/usr/include/iso/math_iso.h", line 84: Error: No direct declarator preceding "("
Does anybody know this?
Thanks
Nik (1 Reply)
Hi,
I am looking for a way to find a particular word in a file then print a line that precedes this line, as well as this line.
Sometimes in a log file there is only one word per line and I need to print one of the lines leading up to the single worded line.
Example - I can grep for ouch... (5 Replies)
Hi
Following is an example line.
echo "192.22.22.22 \"33dffwef\" 200 300 dsdsd" | sed "s:\(\ *\ \):\1:"
I want it's output to be
200
However this is not the case. Can you tell me how to do it? I don't want to use AWK for this. Secondly, how can i fetch just 300? Should I use "\2"... (3 Replies)
Hello,
I have an xml file whose contacts are like below:
<Node>Apple
<B>Value1</B>
<B>Value2</B>
<B>Value3</B>
</Node>
<Node>Mango
<B>Value1</B>
<B>Value2</B>
<B>Value3</B>
</Node>
<Node>Apple
<B>Value1</B>
<B>Value2</B>
<B>Value3</B>
</Node>
<Node>Bannana (3 Replies)
Gurus:
How can I transpose the output below to a format in which I can plot a graph to show VSZ memory usage by PIDs?
stdout:
Tue Jan 22 07:29:19 CUT 2013
42336296 1841272 java wilyadm
21889232 438616 jlaunch sidadm
42532994 414336 jlaunch sidadm
Tue Jan 22 07:49:20 CUT 2013... (1 Reply)
Hi,
Is this possible? I want to take a csv file and find the closest value in another csv file preceding it and following it.
For ex. In this csv file, I'll take the first line:
1309341156.800000000
1309341156.802500000
1309341156.805000000
1309341156.807500000
and find the closest... (2 Replies)
Hi,
I have some data like below:
John 254
Chris 254
Matt 123
Abe 123
Raj 487
Moh 487
How can i print it using awk to have:
254 John,Chris
123 Matt,Abe
487 Raj,Moh
Thanks. (4 Replies)
Hello.
Here is a file contents :
declare -Ax NEW_FORCE_IGNORE_ARRAY=(="§" ="§" ="§" ="§" ="§" .................. ="§"Here is a pattern
=I want to extract 'NEW_FORCE_IGNORE_ARRAY' which is the whole word before the first occurrence of pattern '='
Is there a better solution than mine :... (3 Replies)