Sponsored Content
Full Discussion: date program in ksh
Top Forums UNIX for Advanced & Expert Users date program in ksh Post 5986 by krishna on Tuesday 28th of August 2001 03:52:59 AM
Old 08-28-2001
Lightbulb date program in ksh

Code:
#Author :  kkodava
#!/usr/bin/ksh
#Use of this program is You can findout the no of days & day of starting and ending dates 
#usage no_of_days startdate<yyyymmdd>  enddate<yyyymmdd>
syy=`echo $1|cut -c1-4`
smm=`echo $1|cut -c5-6`
sdd=`echo $1|cut -c7-8`

eyy=`echo $2|cut -c1-4`
emm=`echo $2|cut -c5-6`
edd=`echo $2|cut -c7-8`

tyy=`date +%Y`
tmm=`date +%m`
tdd=`date +%d`
aa=`date +%Ou`
kk=$aa
d[1]='Monday'
d[2]='Tuesday'
d[3]='Wednesday'
d[4]='Thursday'
d[5]='Friday'
d[6]='Saturday'
d[7]='Sunday'


sjdt=`expr \( 1461 \* \( $syy + 4800 + \( $smm - 14 \) / 12 \) \) / 4 + \( 367 \* \( $smm - 2 - 12 \* \( \( $smm - 14 \) / 12 \) \) \) / 12 - \( 3 \* \( \( $syy + 4900 + \( $smm - 14 \) / 12 \) / 100 \) \) / 4 + $sdd - 32075`

ejdt=`expr \( 1461 \* \( $eyy + 4800 + \( $emm - 14 \) / 12 \) \) / 4 + \( 367 \* \( $emm - 2 - 12 \* \( \( $emm - 14 \) / 12 \) \) \) / 12 - \( 3 \* \( \( $eyy + 4900 + \( $emm - 14 \) / 12 \) / 100 \) \) / 4 + $edd - 32075`

tjdt=`expr \( 1461 \* \( $tyy + 4800 + \( $tmm - 14 \) / 12 \) \) / 4 + \( 367 \* \( $tmm - 2 - 12 \* \( \( $tmm - 14 \) / 12 \) \) \) / 12 - \( 3 \* \( \( $tyy + 4900 + \( $tmm - 14 \) / 12 \) / 100 \) \) / 4 + $tdd - 32075`


nod=`expr $ejdt - $sjdt`

nod1=`expr $tjdt - $sjdt`

nod2=`expr $tjdt - $ejdt`

n1=`date +%Ou`

if [ $nod1 -lt 0 ]
then
	nod1=`expr $nod1 \* -1`
	nod1=`expr $nod1 % 7`

	while [ $nod1 -gt 0 ]
	do 
		nod1=`expr $nod1 - 1`
		n1=`expr $n1 + 1`

		if [ $n1 -gt 7 ] 
		then
			n1=1
		fi
	done
fi

if [ $nod1 -gt 0 ]
then
	nod1=`expr $nod1 % 7`

	while [ $nod1 -gt 0 ]
	do 
		nod1=`expr $nod1 - 1`
		n1=`expr $n1 - 1`

		if [ $n1 -eq 0 ] 
		then
			n1=7
		fi
	done
fi

n2=`date +%Ou`

if [ $nod2 -lt 0 ]
then
	nod2=`expr $nod2 \* -1`
	nod2=`expr $nod2 % 7`

	while [ $nod2 -gt 0 ]
	do 
		nod2=`expr $nod2 - 1`
		n2=`expr $n2 + 1`

		if [ $n2 -gt 7 ] 
		then
			n2=1
		fi
	done
fi

if [ $nod2 -gt 0 ]
then
	nod2=`expr $nod2 % 7`

	while [ $nod2 -gt 0 ]
	do 
		nod2=`expr $nod2 - 1`
		n2=`expr $n2 - 1`

		if [ $n2 -eq 0 ] 
		then
			n2=7
		fi
	done
fi

echo start_date : $1 ${d[n1]} + $nod days = end_date : $2 ${d[n2]}

added code tags for readability --oombera

Last edited by oombera; 02-20-2004 at 11:25 AM..
 

10 More Discussions You Might Find Interesting

1. Programming

parameters from my program in c to a .ksh script

hi.. this is my question: it is possible transfer parameters from my program written in C to a .ksh script? how can i do it? i have a program in C, what is called from a .ksh script, and i need what the C program returns some values (parameters) please, help me - any idea thanks ... (2 Replies)
Discussion started by: DebianJ
2 Replies

2. Shell Programming and Scripting

ksh program with password

Hi, I am looking for a way to utilize password when the ksh program is launched. What's the standard or best way to do it? Thanks for your help! (5 Replies)
Discussion started by: cin2000
5 Replies

3. Shell Programming and Scripting

grep within ksh program

Hi, is there problem with grep command when using ksh? I had the below command: /usr/bin/grep \""$Mon $NewDD\"" /tmp/timemanager/intlog.$$ >> /tmp/timemanager/log.$$ 2>/dev/null when I run ksh in debug mode, this command can not grep anything even the data is in the file. + /usr/bin/grep... (3 Replies)
Discussion started by: cin2000
3 Replies

4. Shell Programming and Scripting

want to get previous date from date command in ksh

I want to get previous date from date command. I am using ksh shell. Exmp: today is 2008.09.04 I want the result : 2008.09.03 Please help. Thanks in advance. (4 Replies)
Discussion started by: rinku
4 Replies

5. Shell Programming and Scripting

convert ksh to C program

Hi Guys...is there a way to convert a .ksh script to .C program..? (3 Replies)
Discussion started by: aggars
3 Replies

6. Shell Programming and Scripting

How to Get 60 days Old date from current date in KSH script

Hi i am writing a cron job. so for it i need the 60 days old date form current date in variable. Like today date is 27 jan 2011 then output value will be stote in variable in formet Nov 27. i am using EST date, and tried lot of solution and see lot of post but it did not helpful for me. so... (3 Replies)
Discussion started by: Himanshu_soni
3 Replies

7. Shell Programming and Scripting

ksh compare dates INSIDE a file (ie date A is > date B)

In KSH, I am pasting 2 almost identical files together and each one has a date and time on each line. I need to determine if the first instance of the date/time is greater than the 2nd instance of the date/time. If the first instance is greater, I just need to echo that line. I thought I would... (4 Replies)
Discussion started by: right_coaster
4 Replies

8. Shell Programming and Scripting

ksh program

Hi, I have a text file with multiple sql statements in which I have pick only the below select update and delete statements and do print as given below. All the select,update,delete statements will be as same as ( subquery with ().all statements ending with ; ) the examples given below. 1)... (19 Replies)
Discussion started by: manasa_vs
19 Replies

9. UNIX for Dummies Questions & Answers

Unable to convert date into no. using date -d +%s syntax in ksh shell

hi friends, I m trying to write a script which compares to dates. for this i am converting dates into no using synatx as below v2=`date | awk '{print $2,$3,$4}'` v3=`date +%s -d "$v2"` this syntax is working in bash shell ,but fails in ksh shell. please suggest on this. (12 Replies)
Discussion started by: Jcpratap
12 Replies

10. UNIX for Dummies Questions & Answers

Print start date to end date, given $1 & $2 in ksh

Dear all, I have an user passing 2 parameter 31/03/2015 and 02/04/2015 to a ksh script. How to print the start date to end date. Expected output is : 31/03/2015 01/04/2015 02/04/2015 Note : 1. Im using aix and ksh 2. I have tried to convert the given input into a date, didnt... (0 Replies)
Discussion started by: mr.rajaravi
0 Replies
expr(1B)					     SunOS/BSD Compatibility Package Commands						  expr(1B)

NAME
expr - evaluate arguments as a logical, arithmetic, or string expression SYNOPSIS
/usr/ucb/expr argument... DESCRIPTION
The expr utility evaluates expressions as specified by its arguments. After evaluation, the result is written on the standard output. Each token of the expression is a separate argument, so terms of the expression must be separated by blanks. Characters special to the shell must be escaped. Note: 0 is returned to indicate a zero value, rather than the null string. Strings containing blanks or other special characters should be quoted. Integer-valued arguments may be preceded by a unary minus sign. Internally, integers are treated as 32-bit, two's-complement numbers. The operators and keywords are listed below. Characters that need to be escaped are preceded by `'. The list is in order of increasing precedence, with equal precedence operators grouped within {} symbols. expr | expr Returns the evaluation of the first expr if it is neither NULL nor 0; otherwise, returns the evaluation of the second expr if it is not NULL; otherwise, 0. expr & expr Returns the first expr if neither expr is NULL or 0, otherwise returns 0. expr { =, , , <, <=, != } expr Returns the result of an integer comparison if both arguments are integers, otherwise returns the result of a lexical comparison. expr { +, - } expr Addition or subtraction of integer-valued arguments. expr { , /, % } expr Multiplication, division, or remainder of the integer-valued arguments. string : regular-expression match string regular-expression The two forms of the matching operator above are synonymous. The matching operators : and match compare the first argument with the second argument which must be a regular expression. Regular expression syntax is the same as that of regexp(5), except that all pat- terns are "anchored" (treated as if they begin with ^) and therefore ^ is not a special character, in that context. Normally, the matching operator returns the number of characters matched (0 on failure). Alternatively, the ... pattern symbols can be used to return a portion of the first argument. substr string integer-1 integer-2 Extracts the substring of string starting at position integer-1 and of length integer-2 characters. If integer-1 has a value greater than the length of string, expr returns a null string. If you try to extract more characters than there are in string, expr returns all the remaining characters from string. Beware of using negative values for either integer-1 or integer-2 as expr tends to run forever in these cases. index string character-list Reports the first position in string at which any one of the characters in character-list matches a character in string. length string Returns the length (that is, the number of characters) of string. ( expr ) Parentheses may be used for grouping. EXAMPLES
Example 1: Adding an integer to a shell variable Add 1 to the shell variable a. a='expr $a + 1' Example 2: Returning a path name segment Return the last segment of a path name (that is, the filename part). Watch out for / alone as an argument: expr will take it as the divi- sion operator (see BUGS below). # 'For $a equal to either "/usr/abc/file" or just "file"' expr $a : '.*/ $a Example 3: Using // characters to simplify the expression The addition of the // characters eliminates any ambiguity about the division operator and simplifies the whole expression. # A better representation of example 2. expr //$a : '.*/ Example 4: Returning the value of a variable Returns the number of characters in $VAR. expr $VAR : '.*' EXIT STATUS
expr returns the following exit codes: 0 If the expression is neither NULL nor 0. 1 If the expression is NULL or 0. 2 For invalid expressions. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWscpu | +-----------------------------+-----------------------------+ SEE ALSO
sh(1), test(1), attributes(5), regexp(5) DIAGNOSTICS
syntax error for operator/operand errors non-numeric argument if arithmetic is attempted on such a string division by zero if an attempt to divide by zero is made BUGS
After argument processing by the shell, expr cannot tell the difference between an operator and an operand except by the value. If $a is an =, the command: expr $a = '=' looks like: expr = = = as the arguments are passed to expr (and they will all be taken as the = operator). The following works: expr X$a = X= Note: the match, substr, length, and index operators cannot themselves be used as ordinary strings. That is, the expression: example% expr index expurgatorious length syntax error example% generates the `syntax error' message as shown instead of the value 1 as you might expect. SunOS 5.10 6 Jun 2000 expr(1B)
All times are GMT -4. The time now is 06:31 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy