simple(?) if/else question


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers simple(?) if/else question
# 1  
Old 10-27-2011
simple(?) if/else question

Hello, I have a quick question that is not related to homework in any way shape or form (in case anyone wanted to know). My question is thus:

I have a file "temp" that has the two values say "5" and "3" (separated by a white space). Now, I want to simply write an if-else statement that reads file temp, and if $1 (5) is less than $2 (3) it prints OK, else NO. The values for $1 and $2 do change. My attempt is:
Code:
if [[ ($1 -lt $2) temp]]; 
    then echo "OK"
else 
    echo "NO"
fi;

Right now I'm getting a syntax error. Help would be very much appreciated. Thanks in advance.

Last edited by Scott; 10-27-2011 at 05:34 PM.. Reason: Please use code tags
# 2  
Old 10-27-2011
Code:
read a b < temp
if [ "${a}" -le "${b}" ]; then
   echo OK
else
   echo NO
fi

This User Gave Thanks to vgersh99 For This Post:
# 3  
Old 10-27-2011
Thanks for the quick reply!
Very helpful. Quick follow-up question. I don't know if this matters, but my values are not necessarily integers, and I got this warning:

Code:
line 21: [: 5.039814: integer expression expected

I don't know if there is an easy way to deal with this and/or if this is an actual problem or not?
Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 10-27-2011 at 05:49 PM.. Reason: code tags, please!
# 4  
Old 10-27-2011
Quote:
Originally Posted by astropi
Thanks for the quick reply!
Very helpful. Quick follow-up question. I don't know if this matters, but my values are not necessarily integers, and I got this warning:

line 21: [: 5.039814: integer expression expected

I don't know if there is an easy way to deal with this and/or if this is an actual problem or not?
If your shell doesn't support floating point math (not too many do), try this:
Code:

#!/bin/ksh

read a b < temp
if [ "$(echo "if (${a} < ${b}) 1" | bc)" -eq 1 ] ; then
   echo OK
else
   echo NO
fi

# 5  
Old 10-27-2011
I'm not sure what the above expression does, but it did work for the case when a < b, however when a > b I get:

line 29: [: : integer expression expected

always some issue isn't there Smilie
# 6  
Old 10-27-2011
could you post the entire script? What's on line 29?
This test script works just fine:
Code:
#!/bin/ksh

a=1.72
b=1.73

if [ "$(echo "if (${a} > ${b}) 1" | bc)" -eq 1 ] ; then
   echo ">"
else
   echo "<"
fi;

# 7  
Old 10-27-2011
On line 29 I have:

read a b < temp_star1

I have a lot of comments before that, and a few simple shell commands that should not affect anything. I just noticed I am using

#!/bin/bash

perhaps that's the problem? I'll check. Thanks.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

Syslog.conf: looking for a simple answer on a simple question

Cheers! In /etc/syslog.conf, if an error type is not specified, is it logged anywhere (most preferable is it logged to /var/log/messages) or not? To be more precise I am interested in error and critical level messages. At default these errors are not specified in syslog.conf, and I need to... (6 Replies)
Discussion started by: dr1zzt3r
6 Replies

2. Shell Programming and Scripting

Simple if then else question

I am having trouble making this statement work. I am passing in a number value for the number of days to keep archive logs for and wanted to make sure that it is a number. I have a script that will return 1 for is a number and 0 for is not a number. I also want to make sure that the number is not... (2 Replies)
Discussion started by: gandolf989
2 Replies

3. UNIX for Dummies Questions & Answers

simple question

hi everybody; trying to c unix programming and ive stucked with a problem: simple program filedr=open("tempfile",O_RDWR|O_TRUNC,0); write(filedr,msg1,6); int i; i=read(filedr,msg3,4); it returns 0 bytes read ... why? well if i try to poll() before read , it doesnt indicate POLLHUP or... (4 Replies)
Discussion started by: IdleProc
4 Replies

4. UNIX for Dummies Questions & Answers

Simple question

I had a script in solaris wich i read data, for example: Number 1: _ and the cursor use to be in '_' place because in the code of the script i write: echo "Number 1:\c" but i copy the script to a linux and the cursor 'jump' to the begining of the next line like: Number 1:... (2 Replies)
Discussion started by: lestat_ecuador
2 Replies

5. Shell Programming and Scripting

Simple Question

Hi, Please don't berate me over the simplicity of these questions. I have recently gotten into bash shell scripting and enjoy it quite a bit. One thing I have not found the answer to though is when naming a shell script, what extension is normally used (ie myscript.?)? Also where is the standard... (5 Replies)
Discussion started by: msb65
5 Replies

6. Shell Programming and Scripting

Simple ls question

i am doing ls -la in the out put , first line is as total 41621 What is this total? (2 Replies)
Discussion started by: Saurabh78
2 Replies

7. UNIX for Dummies Questions & Answers

Simple Question

Hi Guys, I've been learning UNIX for the past couple of days and I came across this exercise, I can't get my head around it, so I would be ever so grateful if I could receive some sort of help or direction with this. Create a file with x amount of lines in it, the content of your choice. ... (3 Replies)
Discussion started by: aforball
3 Replies

8. Programming

Simple C question... Hopefully it's simple

Hello. I'm a complete newbie to C programming. I have a C program that wasn't written by me where I need to write some wrappers around it to automate and make it easier for a client to use. The problem is that the program accepts standard input to control the program... I'm hoping to find a simple... (6 Replies)
Discussion started by: Xeed
6 Replies

9. UNIX for Dummies Questions & Answers

Ok simple question for simple knowledge...

Ok what is BSD exactly? I know its a type of open source but what is it exactly? (1 Reply)
Discussion started by: Corrail
1 Replies

10. UNIX for Advanced & Expert Users

Simple Question

Friends, I did following exercise $ echo '' > test $ od -b test $ echo "">test $ od -b test $echo > test $od -b test Every time I got the following output 0000000 012 0000001 But 012 is octal value for new line character . Even though there is no apperent new line character... (6 Replies)
Discussion started by: j1yant
6 Replies
Login or Register to Ask a Question