Hello UNIX & Linux Forums community! Long time Linux daily user hobbyist, new to shell scripting....
I'm working on a script that does all the "work" in one script, and makes calls to a second script to display info to the user via mostly expanding variables in heredocs.
I'm contemplating a -q --quiet option to stop the info displaying. Being new to this, I've thought through and tested the following.
However, I'm at a loss as to the terminology used for what I'm trying to do. That leaves me at a loss to find out if my method would be considered bad scripting, and if so, what would be a more appropriate method to easily implement a --quiet option.
The scripts are quite tested and working well at this point. This is more of an afterthought and mental exercise than something really needed.
BTW, I'm manually parsing options without using getopts. I could post the scripts, around 300 lines total, if needed. It's a (current version) bash script, running Arch Linux if it matters. (mostly current version prog's)
Why aren't you using getopts? Having consistent methods of parsing options greatly contributes to the ability of users unfamiliar with your code automatically know how to get a quick view of the syntax of your utility (with something like: utility -?), the ability to specify options separately or combined and in any order:
should all produce the same results. And, you should have a built-in help/usage message if an unknown option is found. Instead, your code silently ignores unknown options (leading users to believe that the options they provided were correct when, instead, nothing will be done by your code).
You generally want to set flags while processing options, not run the functions that the options indicate should be run (after you have determined all of hte options that are present).
Your code seems to indicate that the -R option in your utility must always be present. Why have an option if it is always required to be set?
This User Gave Thanks to Don Cragun For This Post:
Second time someone asked why not using getopts. I have not looked into it so far, although I probably should.
With manually parsing options, I consider each argument as an operation rather than an option. No real option ability...
When the program is called with no operations, or a non existent op, they get this or in the former, without the error message.:
The scripts:
I was contemplating using the --quiet "option" with the -S and -Sv operations only, as the rest couldn't use --quiet.
I read getopts will not take long options? My script needs the ability to process package names, ie: aurt -S <package name> That and manually parsing them seemed more straight forward to me when I started, likely because of my inexperience.
At this point, it sounds like I need to get my head around understanding getopts and figure out how to deal with the program names separately?
Just reading the replies from you guys gives my more things to research, test, and think about.
getopt does not prevent you from getting package names. That's not what "long options" means also, long options means double-dash-word options like --quiet.
In addition to what Corona688 already said (although I think he meant getopts instead of getopt), in your example: <package name> is either a -S option option-argument or an aurt operand; not an option. You haven't given us enough information to know which you intended in your example. The getopts utility does not place any length limit on option-argument nor operand strings.
Furthermore with many versions of the Korn shell, the built-in getopts utility can handle long and short options (although some ksh man pages fail to document this feature). The method ksh uses doesn't work on bash version 3.2.57. I don't know if it works on bash 4.x version and, you haven't said what version of bash you're using.
Location: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Posts: 2,288
Thanks Given: 430
Thanked 480 Times in 395 Posts
Hi.
There are many schemes / methods / alternatives to help process command line -- CLI -- options. Here are a few. Some take a bit of effort to learn, but they will be time-savers in future work.
I especially like the ones that create man-like pages, and help displays automatically ... cheers, drl
I'm trying to run a script that will remotely copy another script to remote host and run copied script to remote server with automatic options-
#! /bin/bash
HOSTNAME="1 2"
for HOST in $HOSTNAME;
do
scp diskFrag.sh login@$HOST:/home/login
sleep 30
ssh login@$HOST... (2 Replies)
hi guys
we've had nagios spewing false alarm (for the umpteenth time) and finally the customer had enough so they're starting to question nagios. we had the check interval increased from 5 minutes to 2 minutes, but that's just temporary solution. I'm thinking of implementing a script on the... (8 Replies)
I have the following code and I am calling it using
./raytrac.bash -u
and getting problems. For some reason opt_usage is still 0.
opt_usage=0
iarg=0
narg=$#
while (($iarg < $narg))
do
(( iarg = $iarg + 1 ))
arg=$argv
usrInputFlag=`echo $arg | awk '/=/ {print 1}; ! /=/... (22 Replies)
what i want to be is that i would like to reinvent new options that have the same functionality as
...
-u is the same functionality of conv=ucase
and -l have the same functionality as conv=lcase...
is there a way that i can put these in my script so that
whenever i will typed in command... (12 Replies)
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
Creating bash script the dd command and its new options (-l -U)
-l options to lowercase contents of file
-U... (2 Replies)
I'm reading about debugging aids in bash and have come across the set command. It says in my little book that an addition to typing
set
you can also use them "on the command line when running a script..." and it lists this in a small table:
set -o option Command Line... (5 Replies)
I'm trying to write a bash script and call it "compile" such that running it allows me to compile multiple files with the options "-help," "-backup," and "-clean". I've got the code for the options written, i just can't figure out how to read the input string and then translate that into option... (5 Replies)
I have wasted one working day writing this scripts.
It compares two folders and make a good tabbed report about their differences.
#!/bin/bash
function DRAW_DEPTH () {
ROUND=$1
while
do
printf %s " "
ROUND=`expr $ROUND - 1`
done
printf %s "|- "
}
function MAIN () {... (9 Replies)
I'm just not sure where to start looking into this. I want to be able to create switches for my script. Back in the day I'd make my scripts interactive...you know:
echo "what report do you want"
echo "A)boxes with errors"
echo "B)boxes with more than 5 errors"
echo "C)Service groups that have... (3 Replies)