Bash script error problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash script error problem
# 1  
Old 09-21-2010
Bash script error problem

Im in a intro to unix class and we have to create a a basic program to look up an argument in a large file.
when no argument is given he wants us to produce a error messgae, well this works but it also produces another error message because my variable now equals nothing.

Code:
#! /bin/bash                                                                                               
let num=$*
if [[ $num -gt 99 && $num -lt 1000 ]]
then
    echo Area Codes for '"'$num'"':
    grep "^$num" ~cs155/pub/area-codes | sed 's/^/   /'
elif [[ $num -lt 1 ]]
then
    echo 'usage: ./area <query> ...' | grep usage
else
    echo good night
fi

when ./area 303 is entered it works perfectly but when just ./area is entered i get this error

Code:
./area: line 2: let: num=: syntax error: operand expected (error token is "=")
usage: ./area <query> ...

the second line is my own error message which i want how do i get rid of the first?


Moderator's Comments:
Mod Comment Please use code tags

Last edited by Franklin52; 09-21-2010 at 03:34 AM..
# 2  
Old 09-21-2010
problem not clear ,make it with example input
# 3  
Old 09-21-2010
run the command with query

Code:
./area 500

# 4  
Old 09-21-2010
You may consider restructuring the script to separate the parameter validation from the processing such that the script has a beginning a middle and an end.
The actual error is caused by trying to use $num which has no value. We can prevent this by checking the value of $# first. Because there is more than one reason to reject the command line we can prepare the "usage" string in advance. In the original script the "|grep usage" has no use .
Just as an aside, your shebang line contains a lot of trailing blanks and an extra blank between the hash and /bin/bash.

Code:
#!/bin/bash
argcount=$#     # Number of arguments
num="$1"        # Value of parameter 1
usage='usage: ./area <query> ...'       # Usage string

######################
# Parameter validation
######################
if [ ${argcount} -ne 1 ]
then
        echo "${usage}"
        exit
fi
#
if [[ $num -gt 99 && $num -lt 1000 ]]
then
    :
else
    echo "${usage}"
    exit
fi

########################
# Processing starts here
########################
echo Area Codes for '"'$num'"':
grep "^$num" ~cs155/pub/area-codes | sed 's/^/   /'

########
# End
########
echo "good night"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Array problem in Bash Script

I am trying to write a Bash Script using a couple of arrays. I need to perform a countdown of sorts on an array done once daily, but each day would start with the numbers from the previous day. This is what I'm starting with : #!/bin/bash days=(9 8 7 6 5) for (( i = 0 ; i < ${#days} ; i++... (4 Replies)
Discussion started by: cogiz
4 Replies

2. Shell Programming and Scripting

Help with bash script problem

Hi, Below is my bash script: cat run_all.sh if && ; then Number_Count_Program $1.results $2.results > $1.$2.counts else Number_Split_Program $1.results $2.results > $1.$2.split fi After I run the following command: ./run_all.sh A B ./run_all.sh: line 1: Anybody advice to edit... (5 Replies)
Discussion started by: perl_beginner
5 Replies

3. Shell Programming and Scripting

Problem with Bash Script.

Hi guys! I'm new to the forum and to the Bash coding scene. I have the following code paths=/test/a paths=/test/b keywords=\"*car*\" keywords=\"*food*\" for file in `find paths -type f -ctime -1 -name keywords -print 2>/dev/null` do #.... do stuff here for every $file found... (5 Replies)
Discussion started by: RedSpyder
5 Replies

4. Shell Programming and Scripting

Problem using grep in bash script

When it comes to programing and UNIX, I know just enough to be really really dangerous. I have written a python script to parse through a file that contains ~1 million lines. Depending on whether a certain string is matched, the line is copied into a particular file. For the sake of brevity,... (4 Replies)
Discussion started by: errcricket
4 Replies

5. Shell Programming and Scripting

help with a bash script problem

hi to everyone :) i am new to linux and bash and i am trying to build a bash script, that is quite similar to the well known cmd 'split' ... ;) it is now already "working" ... i can use it like: ./splitfix.sh -v -s 10 foo ./splitfix.sh -s 10 -v foo ./splitfix.sh -s 10 foo ./splitfix.sh -v... (5 Replies)
Discussion started by: drjodo
5 Replies

6. Shell Programming and Scripting

Simple bash script problem

#!/bin/bash cd /media/disk-2 Running ./run.sh it's not changing directory.Why? (6 Replies)
Discussion started by: cola
6 Replies

7. Shell Programming and Scripting

Problem in bash script

I have written a script and I get error and I don't understand why. neededParameters=2 numOfParameters=0 correctNum=0 while getopts "s:l:" opt do case "$opt" in s) serviceName= $OPTARG #errorline 1 numOfParameters= $numOfParameters + 1 ;; l) ... (12 Replies)
Discussion started by: programAngel
12 Replies

8. Linux

Problem with crontab + bash script

Crontab: 16 14 * * * /root/bin/./empty_mail.sh >> /root/bin/log.txt L=`mailq |grep -c frozen` echo "${NUMMAIL} frozen mail to be removed from the mailq" #echo "Press Enter to continue" #read CONTINUE echo -en "-> " for i in `mailq | grep frozen | awk '{print $3}'` ; do exim4 -Mrm $i... (1 Reply)
Discussion started by: wessberg
1 Replies

9. UNIX for Dummies Questions & Answers

Bash script argument problem

I'm having problems with bash scripts. If a bash script is called with no arguments, I always get "PHIST=!" as the first argument (i.e. this is what $1 equals). Why? Where does this come from, and how can I fix it? Nothing in the bash man pages refer to this mysterious default argument. (2 Replies)
Discussion started by: sszd
2 Replies

10. Shell Programming and Scripting

bash script problem

hi I am writing a bash script that uses dialog to get user input an diplay messages to user. I have a small problem dialog --inputbox "blabla" 20 50 2> /tmp/output VAR="'cat /tmp/output'" mkdir $VAR the code below requests user for a directory path to be created. But, if the user uses... (1 Reply)
Discussion started by: fnoyan
1 Replies
Login or Register to Ask a Question