I have a script that takes an option for server pools to run the script against. The option is given as a comma separated list (ie, -p 201,204,301).
I'm using eval and brace expansion to get those pool numbers into an array. It works fine unless only 1 pool number is given. Here's the code:
If multiple pools given:
If single pool given:
So if a single pool is given it leaves the braces around it which is bad. I could do a test of $1 to see if there are any commas and process it different if there aren't but I was wondering if there's a better solution than that. Also wondering if how I handled getting the pool numbers into an array was the best way to do it (eval & brace expansion).
I'm in the habit of using the following type of loop structure:
for num in `seq $1 $2`
do
command
doneWhile `seq $1 $2` is not exactly a huge resource hog, I would like to learn a better way. It seems that brace expansion is a good way to go:
for num in {3..10}The problem, though, is... (2 Replies)
i write a batch file , here is the content.
dirname='date +%Y-%m-%d'
mkdir dirname
but it doen's work, it just create a folder named date and +%Y-%m-%d.
i have tried run the command seperately in the bash prompt. after the first
sentence executed , i use $dirname to watch the value of... (4 Replies)
So, I was bored on the train today, and was thinking of ways to loop through elements of an array. I came up with the following simple script, but it doesn't work as brace expansion doesn't seem to work with variables. Is there something I'm missing, or does the shell just not work like this?
... (4 Replies)
This is what I have in my directory.
$ ls
test1.txt test2.txt test3.txt test4.txt test5.txt test_script.sh
This is what my shellscript looks like.
#!/bin/bash
for filename in /shell_expansion/*.txt; do
for ((i=0; i<=3; i++)); do
echo "$filename"
... (5 Replies)
Hello.
I cannot write a command without using eval.
Any help is welcome
Note 1 : What does the function SOMETHING has no importance.
Note 2 : What does the command find has no importance.
It is an expansion variable problem : where to put or or or anythings else
What works (FILTRE_1... (8 Replies)
I have made the following examples that print various parameter expansions
text: iv-hhz-sac/hpac/hhz.d/iv.hpac..hhz.d.2016.250.070018.sac
(text%.*): iv-hhz-sac/hpac/hhz.d/iv.hpac..hhz.d.2016.250.070018
(text%%.*): iv-hhz-sac/hpac/hhz
(text#*.): d/iv.hpac..hhz.d.2016.250.070018.sac... (2 Replies)
#!/bin/bash
SNMPW='/usr/bin/snmpwalk'
while read h i
do
loc=$($SNMPW -v3 -u 'Myusername' -l authPriv -a SHA -A 'Password1' -x AES -X 'Password2' $i sysLocation.0 2>/dev/null)
loc=${loc:-" is not snmpable."}
loc=${loc##*: }
loc=${loc//,/}
echo "$i,$h,$loc"
done < $1
My question is ... ... (1 Reply)
I am trying to become more fluent with the interworking of bash and minimize the number of external calls.
Sample Data. This will be the response of the snmp query.
SNMPv2-MIB::sysName.0 = STRING: SomeHostName
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.1745... (5 Replies)
Hello All,
Could you please do help me here as I would like to perform parameter expansion in shell over a parameter expansion.
Let's say I have following variable.
path="/var/talend/nat/cdc"
Now to get only nat I could do following.
path1="${path%/*}"
path1="${path1##*/}"
Here... (8 Replies)
Discussion started by: RavinderSingh13
8 Replies
LEARN ABOUT DEBIAN
plan9-getflags
GETFLAGS(8) System Manager's Manual GETFLAGS(8)NAME
getflags, usage - command-line parsing for shell scripts
SYNOPSIS
getflags $*
usage [ progname ]
DESCRIPTION
Getflags parses the options in its command-line arguments according to the environment variable $flagfmt. This variable should be a list
of comma-separated options. Each option can be a single letter, indicating that it does not take arguments, or a letter followed by the
space-separated names of its arguments. Getflags prints an rc(1) script on standard output which initializes the environment variable
$flagx for every option mentioned in $flagfmt. If the option is not present on the command-line, the script sets that option's flag vari-
able to an empty list. Otherwise, the script sets that option's flag variable with a list containing the option's arguments or, if the
option takes no arguments, with the string 1. The script also sets the variable $* to the list of arguments following the options. The
final line in the script sets the $status variable, to the empty string on success and to the string usage when there is an error parsing
the command line.
Usage prints a usage message to standard error. It creates the message using $flagfmt, as described above, $args, which should contain the
string to be printed explaining non-option arguments, and $0, the program name (see rc(1)). If run under sh(1), which does not set $0, the
program name must be given explicitly on the command line.
EXAMPLE
Parse the arguments for leak(1):
flagfmt='b,s,f binary,r res,x width'
args='name | pid list'
if(! ifs=() eval `{getflags $*} || ~ $#* 0){
usage
exit usage
}
SOURCE
/src/cmd/getflags.c
/src/cmd/usage.c
SEE ALSO arg(3)GETFLAGS(8)