Nested if with multiple conditions


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Nested if with multiple conditions
# 1  
Old 11-26-2010
Error Nested if with multiple conditions

Deal Experts

I am working on a script to find a date which is 7 days older and follwoing is my approach
Code:
#!/bin/sh
Yr=`date +"%Y"`
Mn=`date +"%m"`
Md=28
Da=`date +"%d"`
echo $Yr
echo $Mn
echo $Da
var1=$Yr$Mn$Da
echo "before" $var1
if expr $Da > 7
then Da=`expr $Da - 7`
var1=$Yr$Mn$Da
echo $var1
fi
if expr $Da <= 7
then 
if $`expr $Mn -1` < 1
then 
Mn=12
Yr=`expr $Yr - 1`
else 
Mn=`expr $Mn - 1`
fi
fi

it is giving error on line 16th saying
A file or directory in the path name does not exist.
Code:
Date.sh[16]: =: 0403-016 Cannot find or open the file.

I am not trying to open or access any file but still it is throwing the error

Please help

Moderator's Comments:
Mod Comment Please use code tags

Last edited by Scott; 11-26-2010 at 09:49 AM..
# 2  
Old 11-26-2010
Well, I think you are trying to say "What was the date 7 days ago.

If so, then try this neat trick by bending the timezone back to extremes:-
Code:
#!bin/ksh
REAL_TZ=$TZ
TZ=CUT168
date "+%d %m %Y"|read dd mm yyyy
TZ=$REAL_TZ
echo "Today is `date +%d/%m/%Y` but 7 days ago it was $dd/$mm/$yyyy"

The value of TZ=CUT168 says "read the system clock and set it to Coordinated Universal Time (aka Zulu or GMT) and go back 168 hours" i.e. 7x24 hours.
Remember to reset the TZ after the tweak or all your trace and logging may get very confusing.


I hope that this helps. If not, please let me know what I've missed.



Robin
Liverpool/Blackburn
UK

Last edited by rbatte1; 11-26-2010 at 10:16 AM.. Reason: Make the date output the same in the echo statement.
# 3  
Old 11-26-2010
Hi

As a newbee I donot know how to reset the TZ to current
Can I add the reset the original at the end of the code?
can you tell me that before I try your solution

Thanks
# 4  
Old 11-29-2010
The line
Code:
REAL_TZ=$TZ

records the setting you start with and then the reverse
Code:
TZ=$REAL_TZ

puts is back afterwards, hence why I have added the echo statement at the end to show that it has been done correctly.

Give it a bash. It doesn't do anything dangerous with the real clock, just your view in your session. If it goes wrong, close that session and open a new one and all will be back as normal.

If you save the above as rbatte1.script and you have any problems, paste the output from
Code:
ksh -x rbatte1.script

back into this thread and I will have a closer look.Smilie




Robin
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk - multiple and nested if-then-else

Hello. I would like to convert the following piece of code from bash to awk. Here are bash variables in a bash script. CUR_ROW_ID and ROW_ID_TO_SEARCH contains a string which represent a row id. The string contain a valid row id. CUR_ROW_ID sometimes may be null. CUR_VALUE... (3 Replies)
Discussion started by: jcdole
3 Replies

2. UNIX for Beginners Questions & Answers

Multiple If conditions

I am analyzing one of the scripts written by another person.script is having multiple if conditions and everything are nested.The code is not formatted properly.Is there any way to identify in Unix to identify begin and end of a particular if block? (6 Replies)
Discussion started by: vamsi.valiveti
6 Replies

3. UNIX for Beginners Questions & Answers

Logic for multiple if conditions.

Hi Gurus, Is there a way we can set a logic for this problem ? The input file looks like below; 1 15 17 2 8 12 3 18 24 4 21 23 5 2 4 6 11 25 So, I would like to print for any row of the input file where the range of value between $2 to $3 lies within the min and max values of Min=10... (2 Replies)
Discussion started by: Indra2011
2 Replies

4. Shell Programming and Scripting

Multiple conditions in IF

Fellas, Am new to unix os/ and here the situation , I am trying to write multiple condition statement inside if but it throws me a error here is my piece of code , if ] && ] && ] then commands fi error : line 15 : ` can someone please advise me how to fix it Please use... (7 Replies)
Discussion started by: xeccc5z
7 Replies

5. UNIX for Dummies Questions & Answers

If + multiple conditions

Hello Unix-Forums! It has been a long time since my last post, but finally I've got a new question: I know in case you can use multiple patterns by case $var in a|b|c|ab) and so on. But how would I place an OR between if ] then ... if ] then ... I want to execute the "..." if... (3 Replies)
Discussion started by: intelinside
3 Replies

6. Shell Programming and Scripting

multiple conditions in 'if clause'

Hi, When i use the below code snippet in my shell script OFC_10.sh: if then echo "Success" exit 2 elif then echo "Failure" exit 6 I get the error message: ./OFC_10.sh: line 41: ' ./OFC_10.sh: line 45: ' Line 41 is the line where If loop starts and line 45 is... (2 Replies)
Discussion started by: shrutihardas
2 Replies

7. Shell Programming and Scripting

Help regarding multiple conditions

Hi All, I am new to shell scripting. Can any one say what is wrong in this if statement, that uses multiple conditions if then *************** else if ( -z $pcs && "$night_time_calc" > "$night_time" ) then ******************************** ... (4 Replies)
Discussion started by: ssenthilkumar
4 Replies

8. Shell Programming and Scripting

multiple if conditions

Guys, Im trying to have a script that evaluates multiple conditions : test.sh: if then echo "host $1" else if then echo "host $1" else echo $1 not valid exit 1 fi when I do ./test.sh brazil1 I get: (4 Replies)
Discussion started by: bashshadow1979
4 Replies

9. UNIX for Dummies Questions & Answers

multiple conditions in if/then

Hello, I am having trouble with the syntax with a conditional statement in a BASH script involving multiple conditions. Any suggestions would be greatly appreciated! if ; then array=("${array}" "$dnNum" ) fi i receive this error: ./testscript: ' (4 Replies)
Discussion started by: grandtheftander
4 Replies

10. Shell Programming and Scripting

multiple conditions in if statements

Hi all, I'm confused about the proper syntax for multi-conditional if then statements. I'm trying to set limitations on info input on the command line.. i.e. if ] ;then $x=$vr1 else print "You have entered an invalid option." Can someone please clue me in on what is wrong with my syntax;... (3 Replies)
Discussion started by: tim mauger
3 Replies
Login or Register to Ask a Question