Passing Arguments in Shell Scripts


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing Arguments in Shell Scripts
# 1  
Old 02-28-2009
Passing Arguments in Shell Scripts

Hello everybody! First time posting hereSmilie

Right, I am trying to pass arguments in my shell scripts using $1, $2 and $3 etc using if else statement........

This is my shell script which is based on serching the google website

Code:
#!/bin/sh
wget  -t1  -E -e robots=off - -awGet.log -T 200 -H -Priserless -O mylist1.html -U "Mozilla" "classical+music&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a"
cat mylist1.html |sed -e 's#<a href#\n<a href#g' >mylist2.html
cat mylist2.html |sed -e 's#</a>#</a>\n#g' >mylist3.html
cat mylist3.html |sed -n -e '/^<a href="http:/p' >mylist4.html
cat mylist4.html |sed -n -e '/\.google/!p' >mylist5.html
cat mylist5.html |sed -n -e '/[0-9]*[0-9]*[0-9]*\.[0-9]*[0-9]*[0-9]*\.[0-9]*[0-9]*[0-9]*\.[0-9]*[0-9]*[0-9]*/!p' >mylist6.html

Could somebody please quide me through!

Thanks

Kev
# 2  
Old 02-28-2009

I don't see any arguments used in your script, nor an if ... else statement.
# 3  
Old 02-28-2009
Quote:
Originally Posted by cfajohnson

I don't see any arguments used in your script, nor an if ... else statement.
Thanks "cfajohnson" for replying.....

What I am trying to do is to pass arguments in my script such as
-h, -- help, -v, --version, -V, --Verbose, -o filename, --output=filename
-s searchphrase, --search=searchphrase, -f format, --format=format

Since I am a beginner in shell scripting I am not able to figure it out.....
# 4  
Old 02-28-2009
Code:
args=
while [ $# -ge 1 ]
do
  case $1 in
    -h | --help) echo help; exit ;;
    -v | --version) echo Version 0.01; exit ;;
    -V | --Verbose ) versbose=1 ;;
    -o ) filename=$2; shift ;;
    -o*) filename=${1#-o} ;;
    --output=) filename=${1#*=} ;;
    -s) searchphrase=$2; shift ;;
    -s*) ${1#-s} ;;
    --search=) searchphrase=${1#*=} ;;
    -f) format=$2; shift ;;
    -f*) format=${1#-f} ;;
    --format=) format${1#*=} ;;
    -*) echo invalid option >&2; exit 1 ;;
    *) args="$args
$1"
       ;;
  esac
  shift
done
oldIFS=$IFS
IFS='
'
set -f
set -- $args
IFS=$oldIFS
set +f


Last edited by cfajohnson; 02-28-2009 at 05:08 PM.. Reason: Modified to preserve non-option arguments
# 5  
Old 02-28-2009
Quote:
Originally Posted by cfajohnson
Code:
while :
do
  case $1 in
    -h | --help) echo help; exit ;;
    -v | --version) echo Version 0.01; exit ;;
    -V | --Verbose ) versbose=1 ;;
    -o ) filename=$2; shift ;;
    -o*) filename=${1#-o} ;;
    --output=) filename=${1#*=} ;;
    -s) searchphrase=$2; shift ;;
    -s*) ${1#-s} ;;
    --search=) searchphrase=${1#*=} ;;
    -f) format=$2; shift ;;
    -f*) format=${1#-f} ;;
    --format=) format${1#*=} ;;
    -*) echo invalid option >&2; exit 1 ;;
    *) break ;;
  esac
  shift
done

SIR you are a geniusSmilie

okay so according to your code:
Code:
-s) searchphrase=$2; shift ;;

So my case statement for $2 would look like this?:
Code:
case $2
echo 'wget  -t1  -E -e robots=off - -awGet.log -T 200 -H -Priserless -O mylist1.html -U "Mozilla" "classical+music&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a"'

case $3 ....and so on

Please correct me if I am wrong

Thanks a Mil!
# 6  
Old 02-28-2009
Quote:
Originally Posted by kev_1234
okay so according to your code:
Code:
-s) searchphrase=$2; shift ;;

So my case statement for $2 would look like this?:

No, you only need the one case statement; it reads all the parameters on the command line. Whatever was passed as the argument to -s will be in the variable $searchphrase.
Quote:
Code:
case $2
echo 'wget  -t1  -E -e robots=off - -awGet.log -T 200 -H -Priserless \
 -O mylist1.html -U "Mozilla" \
"classical+music&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a"'


That line doesn't use anything that has been passed on the command line (it also lacks a URL), so why do you need to parse anything to use it?
# 7  
Old 02-28-2009
Quote:
Originally Posted by cfajohnson
That line doesn't use anything that has been passed on the command line (it also lacks a URL), so why do you need to parse anything to use it?
Yup you are correct

Quote:
Originally Posted by cfajohnson
No, you only need the one case statement; it reads all the parameters on the command line. Whatever was passed as the argument to -s will be in the variable $searchphrase.
Sorry sir, could you explain this part please!!!Smilie

Because say if the user runs "test -s" in the command line will the output go to standard output?

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Passing Arguments to shell script from file is not working as expected.

Hi All, I have below simple shell script in cloudera quick start vm cenos 6 which copy file from source to destination. # file_copy.sh source_dir = ${source_dir} target = ${target_dir} cp source_dir target and my parameter file is like below #parameter_file.txt source_dir =... (4 Replies)
Discussion started by: Narasimhasss
4 Replies

2. Shell Programming and Scripting

C shell script passing arguments problem.

I found something insteresting when I tested passing arguments into my scripts. My scripts is as below. % cat passarg.env #!/bin/csh echo "passarg: argv = $argv argv = $argv" passarg1.env $* % cat passarg1.env #!/bin/csh echo "passarg1: argv = $argv argvp=$argv" set str = "test... (5 Replies)
Discussion started by: bestard
5 Replies

3. Shell Programming and Scripting

Shell scripting with passing arguments

Hi All, I am using the script for creating local queue and passing the arguments while running the script as below n=0 while do e=`expr $n + 3` echo 'DEFINE QL('$e') MAXDEPTH('$6') MAXMSGL('$7') DEFPSIST('$8') '$9'' | /apps/mqm_opt/bin/runmqsc $2 n=`expr $n + 1` done Running the... (5 Replies)
Discussion started by: Anusha M
5 Replies

4. Shell Programming and Scripting

Passing multiple arguments to a shell script

Hi Gurus, Need some help with the shell scripting here. #!/bin/ksh ps -ef | grep -i sample.ksh | grep -v grep > abc.txt if then echo "sample.ksh is executing" else echo "sample.ksh is not executing" fi (1 Reply)
Discussion started by: jayadanabalan
1 Replies

5. Shell Programming and Scripting

Problems passing shell arguments to perl

Semi-newbie, so flame throwers to 'singe-only', please. ;-) I have a large number of (say) .html files, where I'd like to do a recursive in-place search and replace a particular string. The following bit of perl works fine: perl -pi -e 's/oldstring/newstring/g' `find ./ -name *.html` ... (2 Replies)
Discussion started by: johnny_canucl
2 Replies

6. Programming

Passing arguments from java to script shell

Hello Please i want to pass parameter (the string s) to the shell script: Quote: String s="Hello"; Process process = Runtime.getRuntime().exec("sh script1.sh"); How can i do please? Thank you (0 Replies)
Discussion started by: chercheur857
0 Replies

7. Shell Programming and Scripting

Passing arguments from a bash shell script to a command

I'm pretty new to bash scripting and I've found myself writing things like this (and the same with even more nesting): if $CATEGORIES; then if $LABEL_SLOTS; then $pyth "$wd/texify_grammar.py" "$input" "$texfile" "--label-slots" "--categories" "$CATEGORY_LIST" ... (9 Replies)
Discussion started by: burbly
9 Replies

8. Shell Programming and Scripting

passing runtime arguments to a shell script...

hi I am new to shell programming.....my question is while running one of my shell program it stops in between to accept input from the user and proceeds furthur after giving input....I want to know whether I can set this input through some files so that the shell acript reads the input from the... (10 Replies)
Discussion started by: santy
10 Replies

9. UNIX for Dummies Questions & Answers

passing arguments from shell to java

Hi: I have a script called runjava: The content --- search=$1 dpi=$2 prefix=$3 input=$4 output=$5 java -Djava.library.path=./lib/path/Lib -classpath .:lib/path/Lib/mylib.jar myclass $search $dpi $prefix $input $output How does myclass parse arguments --- String searchTerm =... (3 Replies)
Discussion started by: kenpeter
3 Replies

10. Shell Programming and Scripting

Passing and using arguments in Scripts.

I am new to scripting in AIX / UNIX. I have a script that runs 4 other scripts and I want to be able to pass in a agrument that I can check before I run the next script to see if the previous script finished with no errors. Can someone send me an example of this as I'm sure it's pretty easy to... (1 Reply)
Discussion started by: David.Vilmain
1 Replies
Login or Register to Ask a Question