Read Strings in as options to switches


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Read Strings in as options to switches
# 8  
Old 02-11-2013
Quote:
Originally Posted by Corona688
Actually, this already accounts for it. See the shift statements. They remove the first argument and move everything down. That's why I can just check $1 every loop.

i.e. if $1=a, $2=b, $3=c, after you do shift, you get $1=b, $2=c.

There's an extra shift in the flags that take arguments to keep the loop in sync.
If you have some options that take option arguments and some that don't, you'll find that getopts gives you lots of capabilities that the type of script provided in message #2 in this thread does not provide. These capabilities allow shell scripts to parse options like the standard utilities defined by the POSIX standards and the Single UNIX Specifications. (Multiple options can be grouped after a single "-", option arguments can be separate from the option flag or combined into a single operand, etc.)

For a better example of what you can do with getopts, try something like:
Code:
#!/bin/ksh
AVAR="Default avar value"
BF=
CF=
TVAR="Default tvar value"
while getopts 'a:bct:' x
do      case "$x" in
        (a)     AVAR="$OPTARG";;
        (b)     BF=1;;
        (c)     CF=1;;
        (t)     TVAR="$OPTARG";;
        (?)     echo "Usage: $0 [-bc] [-a AVAR_string] [-t TVAR_string] [file...]"
                exit 1
        esac
done
shift $((OPTIND - 1))
echo "AVAR is set to $AVAR"
if [ "$BF" == 1 ]
then    echo "Option b present"
fi
if [ "$CF" == 1 ]
then    echo "Option c present"
fi
echo "TVAR is set to $TVAR"
echo "$# file operand(s) present:"
while [ $# -gt 0 ]
do      printf "\t%s\n" $1
        shift
done
exit

Save it in a file (e.g., tester). Change the /bin/ksh in the 1st line to an absolute pathname of a standards conforming shell on your system. I use the Korn shell, but this script will work with bash and several other shells. (However, it won't work with csh or similar shells like tcsh.) Make the script executable by running the command:
Code:
chmod +x tester

and try running it with several test cases. For example:
Code:
./tester -a "a value" -c  -b
./tester -baastring -t tstring file1 file2
./tester -d file


Last edited by Don Cragun; 02-11-2013 at 07:19 PM.. Reason: Fix typo...
These 2 Users Gave Thanks to Don Cragun For This Post:
# 9  
Old 02-11-2013
Top class explanation Don
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script to read multiple options from file, line by line

Hi all I have spent half a day trying to create a shell script which reads a configuration file on a line by line basis. The idea of the file is that each will contain server information, such as IP address and various port numbers. The line could also be blank (The file is user created). Here... (1 Reply)
Discussion started by: haggismn
1 Replies

2. Shell Programming and Scripting

how to read strings from a txt and put them into a spreadsheet?

i have hundreds of thousands of txt files as below, RADARSAT 1 SCENE DESCRIPTION SCENE_ID c0005098 MDA ORDER NUMBER GEOGRAPHICAL AREA CIS ScanSar Canada SCENE START TIME APR 02 1997 23:05:10.222 SCENE STOP TIME APR 02 1997 23:02:49.695... (5 Replies)
Discussion started by: sunnydanniel
5 Replies

3. Shell Programming and Scripting

echo switches

Hello All, I am writing an shell script but abruptly its not able to recognize switches in echo statement. #!/bin/bash top -n 1 -b>ankit host=`hostname` time=`cat ankit|grep load|tr -s " "|cut -d " " -f3` load=`cat ankit|grep load|tr -s " "|cut -d "," -f4|cut -d ":" -f2` ... (3 Replies)
Discussion started by: ajaincv
3 Replies

4. Shell Programming and Scripting

Read file and remove special characters or strings

Hello all I am getting data like col1 | col2 | col3 asdafa | asdfasfa | asf*&^sgê 345./ |sdfasd23425^%^&^ | sdfsa23 êsfsfd | sf(* | sdfsasf My requirement is like I have to to read the file and remove all special characters and hex characters ranging form 00-1f from 1st column, remove %"'... (1 Reply)
Discussion started by: vasuarjula
1 Replies

5. Solaris

Boot options - DVD drive read error

I was wondering if there was a way to boot from openboot from the dvd drive. I was thinking about imaging the dvd to a blank drive and going about it that way. I just need to do a flash install. (5 Replies)
Discussion started by: adelsin
5 Replies

6. Shell Programming and Scripting

use strings in case statement options

I iterate in string list well but when I try to add a case statement in order to wrap the string value in a more accurate message I faced different problems. #Code starts ST_CODES="CN CU BU CQ LE" for ST_CODE in $ST_CODES do #echo $ST_CODE CODE="$ST_CODE""\n" ... (3 Replies)
Discussion started by: fdiaza
3 Replies

7. Shell Programming and Scripting

Read from a file and use the strings in a loop

Hello all, I need some help to create a script which contain a few strings on every line, and use those strings in a loop to fire some commands. for exmaple the file looks like tom dave bill andy paul I want to read one line at a time and use it in loop like command tom command dave... (3 Replies)
Discussion started by: xboxer21
3 Replies

8. UNIX for Advanced & Expert Users

Tar switches!!!

Hi, If i want to write my data on several tapes, (more than one tape), what switch(s) i need to use with tar. In other word if my data needs the sapce more than one tape & i don't wanna to compress or ... my data. so is it possible to write up to the end of the tape & it asks to put another... (1 Reply)
Discussion started by: nikk
1 Replies
Login or Register to Ask a Question