help with an if expression..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting help with an if expression..
# 1  
Old 03-13-2012
help with an if expression..

hello everyone.. as i said in a previous thread again, im new in linux shell programming and i came up with a new problem i cant solve. so i need your help..

this is the code
Code:
#!/bin/sh
a=0
while [ "$a" -lt 100 ]
do
a=`expr $a + 1`
b=$(( 3 * $a ))
if [ "$a" == "$b" ] ; then
continue
fi
echo "$a"
done

what im trying to do here is display the numbers 1 2 4 5 7 8 10 11 14 15 ....
my code isnt working correctly.. when i run it like this,i get all the numbers displayed even those i dont want (3 6 9 12 etc) and i also get the message unexpected operator after every number..

and when i run it like this
Code:
#!/bin/sh
a=0
while [ "$a" -lt 100 ]
do
a=`expr $a + 1`
b=$(( 3 * $a ))
if [ $a -eq $b ] ; then
continue
fi
echo "$a"
done

i just have all the numbers displayed.. 1 2 3 4 5 6 7 8 9 10... even those i dont want.. so the code is not working correctly..
where is the mistake? im pulling my hair off!
# 2  
Old 03-13-2012
If you are looking to drop multiples of three (you list 15 in your example of desired output, so I'm not 100% sure that's what you want), then what you are comparing is in error.


You are comparing your index with three times the index, and they will never be equal, so you will never skip your printing.


Try something like this:
Code:
#!/bin/sh
      a=0
     while [  "$a" -lt 100 ]

     do
      a=`expr $a + 1`
      b=$((  $a % 3 ))       # if a is evenly divisible by 3, b will be 0

       if [ $b -eq 0 ] ; then
        continue
      fi
      echo "$a"
      done


Last edited by agama; 03-13-2012 at 08:05 PM.. Reason: comment
# 3  
Old 03-13-2012
thank you very much.. this is actually what i had to do from the beggining.. Smilie
i just want to add that this can also work with
Code:
b=`expr $a % 3`

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Why Relational Expression is Writing to a Expression?

Hello All, Not sure why this is happening... When the following If Statement is evaluated for some reason it is creating a file in the CWD called '0'. I've seen this happen before, just not in an If Statement... CODE: if then DIR_NAME="$1" DIR_SIZE=0 STATUS="" else... (3 Replies)
Discussion started by: mrm5102
3 Replies

2. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

3. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

4. UNIX for Dummies Questions & Answers

Look for an expression in VI

Hi, on HP Unix; how to look for an expression in vi ? I know look for a word : /myword But for an expression like "Jun 23 11:30" ?? Thank you. (4 Replies)
Discussion started by: big123456
4 Replies

5. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

6. Shell Programming and Scripting

Help with an expression

I have searched and can't seem to find or understand :confused: how to put together the right expression so my script doesn't traverse .files like .ssh and to skip certain dir's. So if I'm searching /dir1 but didn't want to search /dir1/this_dir What do I need to add to this statement for that... (2 Replies)
Discussion started by: jcalisi
2 Replies

7. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

8. Programming

error: initializer expression list treated as compound expression

I had seen this error for the first time ..... error: initializer expression list treated as compound expression please help.... (12 Replies)
Discussion started by: arunchaudhary19
12 Replies

9. UNIX for Dummies Questions & Answers

OR expression

Hi all, I want to perform 'OR' for the following 3 variables. rc1=1 rc2=1 rc3=1 rc=`${rc1} \| ${rc2} \| ${rc2} ` How can it be done? Thanks, Rock (3 Replies)
Discussion started by: Rock
3 Replies

10. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies
Login or Register to Ask a Question