Arithmetics in if else statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Arithmetics in if else statement
# 1  
Old 04-24-2012
Arithmetics in if else statement

hello,

i'm trying to get some deeper view into the shell. at the moment I have following problem with the bash:

I read some numbers via some awk scripts

Code:
A=`awk '/id="identifier/ {......}`

which works fine,
then I want to make an if statement whth some calculations. but then it does not work.

Code:
READS1=`echo 45`;
READS2=`echo 100`;
if [ $READS1 -gt 2 * $READS2 ]; then echo  "gleich";  else echo "ungleich"; fi;

doesnt work


Code:
READS1=`echo 45`;
READS2=`echo 100`;
if [ $READS1 -gt $READS2 ]; then echo  "gleich";  else echo "ungleich"; fi;

does work
I tries some variants, with (),'',`` but no success.

thanks for help
# 2  
Old 04-24-2012
Math doesn't work that way in the shell.

If you have BASH or KSH, you can do math inside $(( )) brackets like

Code:
if [ $READS1 -gt $((2 * READS2)) ]; then echo  "gleich";  else echo "ungleich"; fi;

# 3  
Old 04-24-2012
First, let's learn how to set a variable to a value. We don't need echo and all that punctutation. Also,there is never a reason to end a line in Shell with a semi-colon. For readability while testing let's indent our code and build in some diagnostic echo statements:
Code:
READS1=45
READS2=100
READS3=$((2 * ${READS2}))
echo "READS1=${READS1}"
echo "READS2=${READS2}"
echo "READS3=${READS3}"
if [ ${READS1} -gt ${READS3} ]
then
     echo  "gleich"
else
     echo "ungleich"
fi

./scriptname
READS1=45
READS2=100
READS3=200
ungleich

Hmm. Doesn't German ungleich mean English unequal ?

Last edited by methyl; 04-24-2012 at 02:03 PM..
# 4  
Old 04-24-2012
ok thank you, the firsthint helped me.
I know that it was not neccessary to make the a=`echo 45` statement. bus I thought there might be some type-difference? are there any types in the bash? a la integer vs. string??

thanks a lot

---------- Post updated at 06:07 PM ---------- Previous update was at 06:02 PM ----------

and yes: ungleich = unequal,
it was a -eq before
# 5  
Old 04-24-2012
Most of the time the Shell will deduce the type according to context. There is a small efficiency benefit from using the Shell typeset command which will be described in the manual for your Shell.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies

2. Shell Programming and Scripting

If statement

Hi, I have this code here. Its suppose to do something when certain condition is met, I'm pretty sure at least one of the condition will be meet somewhere in the loop but it always go to else part of the script. Is something wrong on this script? age_list=`tar -tvf /home/dir/$tarfile... (4 Replies)
Discussion started by: erin00
4 Replies

3. Shell Programming and Scripting

If statement help

I am new to Unix and have been given the task of modifying a current script. Most of the programming I do is Oracle based, not unix. That being said when I run my current script i get the following (not sure if this is an actual error or if it is just being informative) ./test_cron.s: cdev:... (3 Replies)
Discussion started by: biobill
3 Replies

4. Shell Programming and Scripting

If .. Else statement

Hi everyone, I have an output file and somewhere in this file there is a line looks like # Integrated weight : .60573E+01 I need to write a shell script which finds and reads the above line, then if the number given in that line is in certain interval (let's say 5 < # < 9) do... (3 Replies)
Discussion started by: hayreter
3 Replies

5. Shell Programming and Scripting

case construction for basic Arithmetics calculation

the scrip (q4.sh) should perform the following calcuation (+, -, / and *) it should be used like this: q4.sh number1 operation number2 I wrote it already but the "*" does not work. #!/bin/bash #Date: 2010.10.19 # un script qui utilisera une instruction case pour effectuer des opérations... (6 Replies)
Discussion started by: flash80
6 Replies

6. Shell Programming and Scripting

If statement help

I'm trying to create a script that would allow me to identify the sucessful removal of a file. Here's what i put together so far, let me know if it's correct or not. FILE_NAME="cactus.dat" FILE_FIND='find / -name $FILE_NAME' if ;then echo "cactus.dat was not removed successfully" ... (3 Replies)
Discussion started by: sdpinoy
3 Replies

7. UNIX for Dummies Questions & Answers

If statement (yes or no)

I have the program: #!/bin/ksh echo Please enter yes or no read n typeset -l n if ] then echo My name exit else echo delete my name fi Question: How can I make the program accept only the word "yes" or "no" otherwise it will ask the user to re-enter? Thanks! (7 Replies)
Discussion started by: bobo
7 Replies

8. Shell Programming and Scripting

How is use sselect statement o/p in insert statement.

Hi All, I am using Unix ksh script. I need to insert values to a table using the o/p from a slelect statement. Can anybody Help! My script looks like tihs. ---`sqlplus -s username/password@SID << EOF set heading off set feedback off set pages 0 insert into ${TB_NAME}_D... (2 Replies)
Discussion started by: nkosaraju
2 Replies

9. Shell Programming and Scripting

If statement - How to write a null statement

In my ksh script, if the conditions of a if statement are true, then do nothing; otherwise, execute some commands. How do I write the "do nothing" statement in the following example? Example: if (( "$x"="1" && "$y"="a" && "$z"="happy" )) then do nothing else command command fi... (3 Replies)
Discussion started by: april
3 Replies

10. UNIX for Dummies Questions & Answers

if [] statement

Hi, Being new to Unix I came across a statement like if ; then... Does anyone know what they call the -f and where I can find a whole list of options that I can use. Regards jayram7. :confused: (2 Replies)
Discussion started by: jayram7
2 Replies
Login or Register to Ask a Question