Passing Arguments in Shell Scripts


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing Arguments in Shell Scripts
# 22  
Old 03-01-2009
Quote:
Originally Posted by kev_1234
Okay, my script is basically on the first page.

The error could easily be in the difference between "basically" and "exactly". You have made changes since you first posted the script. Please post the whole script as it is now.
Quote:

Now, if I make another .html file and type into the terminal to run my script like this:
The output is:

Code:
kevin@ubuntu:~/Documents/Practice$: ./test
file does not exists
kevin@ubuntu:~/Documents/Practice$: ./test


"file does not exists" is not a shell error message, and it doesn't exist in any code you have posted. Where did it come from?
# 23  
Old 03-01-2009
Code:
#!/bin/sh 
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

case $1 in
    -s) searchphrase=$2 ;;    
esac

if [ -s "$searchphrase" ]
then
    echo "File $searchphrase exists"
else
    echo "No such $searchphrase file exists"
fi

wget  -t1  -E -e robots=off - -awGet.log -T 200 -H -Priserless -O mylist1.html -U "Mozilla" "http://www.google.co.uk/search?q=classical+music&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-GB:unofficial&client=firefox-a"
# put a newline at the start of a link
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

Sorry I meant "No such file exists"

Last edited by kev_1234; 03-01-2009 at 09:27 PM..
# 24  
Old 03-01-2009
Quote:
Originally Posted by kev_1234
Code:
#!/bin/sh
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

case $1 in
    -s) searchphrase=$2 ;;
esac


What's that for? All options have been parsed, and will never still be among the arguments.
Quote:
Code:
if [ -s "$searchphrase" ]
then
    echo "File $searchphrase exists"
else
    echo "No such $searchphrase file exists"
fi


Why do you test for a file named for the value of "$searchphrase"?

Where would it come from?
Quote:
Code:
wget  -t1  -E -e robots=off - -awGet.log -T 200 -H -Priserless -O mylist1.html -U "Mozilla" "http://www.google.co.uk/search?q=classical+music&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-GB:unofficial&client=firefox-a"

# put a newline at the start of a link
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


You have five UUOCs, four unnecessary temporary files, and probably two or three unnecessary seds.

One other question: What is the exact command line you used to call the script?

Last edited by cfajohnson; 03-01-2009 at 09:54 PM..
# 25  
Old 03-01-2009
Code:
#!/bin/sh 
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

case $1 in
     -s) searchstring=$2 ;;
esac

if [ -s "$searchstring" ]
then
  echo  "file $searchstring exists"
else
  echo  "file $searchstring does not exist"
fi


wget  -t1  -E -e robots=off - -awGet.log -T 200 -H -Priserless -O mylist1.html -U "Mozilla" "http://www.google.co.uk/search?q=university+of+ulster&btnG=Search"
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

For some unknown reason I changed it from 'searchstring to searchphrase'

About the five 'UUOCs' those are only for test purposes........Smilie

The command that I would run from my terminal would be
kevin@ubuntu:~/Documents/Practice$: ./test
# 26  
Old 03-01-2009
Quote:
Originally Posted by kev_1234
For some unknown reason I changed it from 'searchstring to searchphrase'

That still doesn't explain why it is there.

After the options have been parsed, $1 can never contain -s, so why do you test for it?

The variable $searchstring can never have any value (unless is has been exported in the calling environment). And why do you test for a file with that name, even if it could have a value?
Quote:

About the five 'UUOCs' those are only for test purposes........Smilie

They are not needed for anything, testing or otherwise.
Quote:

The command that I would run from my terminal would be
kevin@ubuntu:~/Documents/Practice$: ./test

If you are not calling it with any arguments, why do you want them parsed?????
# 27  
Old 03-01-2009
Code:
case $1 in -s) searchstring=$2 ;; esac if [ -s "$searchstring" ] then echo "file $searchstring exists" else echo "file $searchstring does not exist" fi

The above was given by you in 'post 16' which I introduced in my code!

Quote:
If you are not calling it with any arguments, why do you want them parsed?????
I understand your point.....may be introduce another run phrase in my list of arguments which I could use when running the file???

Let me think about this one!
# 28  
Old 03-01-2009
Quote:
Originally Posted by kev_1234
Code:
case $1 in -s) searchstring=$2 ;; esac if [ -s "$searchstring" ] then echo "file $searchstring exists" else echo "file $searchstring does not exist" fi

The above was given by you in 'post 16' which I introduced in my code!

That was in answer to an out-of-context question about your if statement, which did not appear in the script you posted.

If you don't know what it's for, why is it in your script?
Quote:

I understand your point.....may be introduce another run phrase in my list of arguments which I could use when running the file???

What list of arguments? You just said you ran the script without arguments.
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