need help with test condition in shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting need help with test condition in shell script
# 1  
Old 09-07-2006
need help with test condition in shell script

I'm new to scripting and I need help with a bourn shell script. What i'm trying to do is a test condition where "if the time is within 2 hours, it's true" and so on.

The time is in the following format

DATE=`/bin/date +"%Y%m%d%H%S"`

for example, 20060907152000.

So, what the script first does is go to a web page and the web page returns a number in that exact format. I have the script set up to go to the web page and look at that line.

What I need is help with a test condition to have it check to see if the variable from the web is within 2 hours of the system time and I have no idea how to do that.

Can someone help me?
# 2  
Old 09-08-2006
This should work even if the clock ticks past midnight.....

timenow=20060907150000 # Your unix time
timeweb=20060907160000 # The time you got from the web
timediff=020000 # your 2 hour difference
if [ $timeweb -le `expr $timenow + $ timediff` ] | [ $timeweb -ge `expr $timenow - $timediff` ]
then
echo "Its a GOOD time :-)"
else
echo "Its a BAD time!"
fi

Not fully tested as you are adding and subtracting number with 14 digits, that could be a little big for UNIX, UNIX should roll it over.

You need to test it over a period to ensure it works for you.

The other method is to use "subtr" and exctract only the HHMMSS. The only issue with that is you will need to be aware of the clock changing days at midnight.

eg expr substr 20060907235900 9 6 gives 235900 while
expr substr 20060908000000 9 6 gives 000000

Haveagoodweekend
# 3  
Old 09-08-2006
thank u very much. i will try this and let u know the result.
# 4  
Old 09-08-2006
I think i'm almost there. I modified my script like u said and i'm getting error:

./2test.sh: line 24: [: 20060908112001: unary operator expected

the line that is failing is:

if [ $timeweb -le `expr $timenow + $timediff` ] | [ $timeweb -ge `expr $timenow - $timediff` ]
# 5  
Old 09-08-2006
it should be || not |
# 6  
Old 09-08-2006
that worked! thank u both for your help. I'll let this run a few days and make sure it's stable.
# 7  
Old 09-11-2006
ok, so i thought this worked, but the test is always passing, no matter what the time is. I tested it by making the "timenow" variable 4 hours from the current time and it doesnt' fail like it should. It shoud fail if it's off by more than 2 hours. Here's my script right now, what exactly is that "if" line saying? and how do i change it to what i want:

timenow=20060907150000 # Your unix time
timeweb=20060907160000 # The time you got from the web
timediff=020000 # your 2 hour difference
if [ $timeweb -le `expr $timenow + $ timediff` ] || [ $timeweb -ge `expr $timenow - $timediff` ]
then
echo "Its a GOOD time :-)"
else
echo "Its a BAD time!"
fi
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

While condition in shell script

while do if ;then read driverName else driverName="" fi done can anyone please explain what exactly is happening on 1st line...is it like the conditions being ORed...I have no clue about this. (4 Replies)
Discussion started by: rtagarra
4 Replies

2. Shell Programming and Scripting

Shell script that check the argument passed to it and prints error if test condition is not met

I want to make a script that check for the argument passed to it and generates an error in case any character/string argument passed to it. I am using below code, but its not working. can anyone help. #!/bin/bash if ]; then echo 'An integer argument is passed to the script hence... (3 Replies)
Discussion started by: mukulverma2408
3 Replies

3. Shell Programming and Scripting

IF condition against a ARRAY in shell script

Hi, I want to check a particular string inserted by User to be checked against the values i already have in a ARRAY string using IF condition. Is this possible? if yes how to do that. example : i have a,b,c,d,e,f values in a array called values i asked user to enter a value: user entered... (2 Replies)
Discussion started by: kukretiabhi13
2 Replies

4. Shell Programming and Scripting

How to check weather a string is like test* or test* ot *test* in if condition

How to check weather a string is like test* or test* ot *test* in if condition (5 Replies)
Discussion started by: johnjerome
5 Replies

5. AIX

if condition in AIX5.3-10 shell script

True if file exists and has been modified since it was last read. if then command else exit fi i am on AIX5.3-10. it does not understand -N any other way. i can use -ot (file1 is older than file2), but prefer -N if possible. (3 Replies)
Discussion started by: tjmannonline
3 Replies

6. Shell Programming and Scripting

Help with shell script to check the condition.

:) Hi, I want to script for this scenerio, OSR Settings Scenario : We are looking to find all the *.a files from the following locations in the filesystem of a server. OSR Directories /etc /bin /usr/bin /usr/sbin /var/adm These *.a files should have the permissions on... (12 Replies)
Discussion started by: sakthilinux
12 Replies

7. Shell Programming and Scripting

test condition

Hi there, I tried to search for this almost everywhere, but didnt get any proper information on it. What is the difference between ] Some of the code works when I have only single condition i.e. ] && $dothis1 || $dothis2 But if i try to include another testcondition to the... (1 Reply)
Discussion started by: tostay2003
1 Replies

8. Shell Programming and Scripting

Test condition

Hello, what is the better and correct way to perform a comparison: I have been using the following with no problems: if ] then .... fi I have seen this also used : if then .... fi When I try : if then .... fi I get an error like .... the test condition expects a... (4 Replies)
Discussion started by: gio001
4 Replies

9. UNIX for Dummies Questions & Answers

Condition test

Hi there, When I try to do a condition on test: $ str1=abcd $ test $str1 $ echo $? 0 Is there anyway to display the answer to be 'TRUE' or 'YES'? rather than 0? If so, how can I do it without using awk or sed. (2 Replies)
Discussion started by: felixwhoals
2 Replies

10. Shell Programming and Scripting

test and if condition

Guys look at this: i have to write a script that takes a file as an argument. The script should be able to determine what permissions the owner, group and everybody has for the file passed in. The output should be displayed similar to this. READ WRITE EXECUTE OWNER LEE.BALLANCORE YES YES NO... (9 Replies)
Discussion started by: ciroredz
9 Replies
Login or Register to Ask a Question