02-09-2015
The script that you provided reads a line of data provided by a user into a shell variable named a. It then uses awk to see if the 5th character in the 1st string of non-blank characters is a "5" (presumably the 1st digit in a two digit month is a "5"), and if it is it gets the 6th character from that string, adds 1 to it, and throws it away; otherwise, it prints the string "wrong". In either case, your script then gets a syntax error from the Korn shell because you have an if statement with no matching then nor fi.
Is this a homework assignment?
If it isn't, can you explain (in English) what needs to be done to a string in the format YYYYMMDD to add 9 days to it and end up with a valid date in the same format. If you can't explain what your script needs to do to update your user's input string, you would be much better off using the tools on your system that are designed to perform date arithmetic instead of reinventing the wheel. Even if you can explain the steps required, please explain why you want to reinvent the wheel rather than use system tools that have been written to correctly handle these types of calculations in normal years, in leap years, and (in some cases) even across the conversion from Julian to Gregorian calendars.
And, please tell us what operating system you're using. An operation like this can be performed with a 1988 vintage Korn shell, but some things would be easier with a 1993 or later version of the Korn shell. What version of the Korn shell is installed as /bin/ksh varies from system to system.
This User Gave Thanks to Don Cragun For This Post:
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
I'm new to unix scripting.How can i call a script from another script.
I have a.ksh and b.ksh .I have to call b.ksh from a.ksh after it is successfully exceuted.
I tried using
#!/bin/ksh -x in a.ksh and at the end i have used /path/b.ksh
My problem is it is executing only a.ksh.it... (6 Replies)
Discussion started by: ammu
6 Replies
2. Shell Programming and Scripting
I normally trace a script with the ksh -x <script name> and redirect strderr to file. But if you have a script like the examble below......
vi hairy
bear=`grep bear animals`
if
then
ksh more_animals
fi
If I ksh -x hairy it won't trace "more_animals" unless I put a -x in it. Is... (1 Reply)
Discussion started by: shorty
1 Replies
3. Shell Programming and Scripting
Ih all,
i have multiples ksh scripts for crontab's unix jobs
they all have same variables declarations and some similar functions
i would have a only single script file to declare my variables, like:
var1= "aaa"
var2= "bbb"
var3= "ccc"
...
function ab { ...}
function bc { ... }... (2 Replies)
Discussion started by: wolfhurt
2 Replies
4. Shell Programming and Scripting
Hi,
I need some help with the Ksh scripting....
I have a Script call Mail.ksh which calls Crank.ksh which calls Readdates.ksh whoch calls mindiff.ksh
the output of mindiff.ksh and Readdates.ksh are wirtten to a text file...
Here is how each file is called or executed...
./Mail.ksh 30... (3 Replies)
Discussion started by: bhagya2340
3 Replies
5. Shell Programming and Scripting
1. Script using bash
#!/bin/bash
a=4294967296
(( b=$a / 2 ))
echo "$a"
echo "$b"
*** output ***
4294967296
2147483648
2. Script using ksh
#!/bin/ksh
a=4294967296
(( b=$a / 2 ))
echo "$a"
echo "$b"
*** output ***
4294967296 (3 Replies)
Discussion started by: gautam.shrestha
3 Replies
6. Shell Programming and Scripting
Hi
I am new to this Scripting process and would like to know How can i write a ksh script that will call other ksh scripts and write the output to a file and/or email.
For example
-------
Script ABC
-------
a.ksh
b.ksh
c.ksh
I need to call all three scripts execute them and... (2 Replies)
Discussion started by: pacifican
2 Replies
7. UNIX for Dummies Questions & Answers
Hi ,
What is the diffence between executing the script like
./myscript.ksh
. ./myscript.ksh
I have found 2 difference but could not find the reason
1. If i export a variable in myscript.ksh and execute it like . ./myscript.ksh the i can access the other scripts that are present in... (5 Replies)
Discussion started by: max_hammer
5 Replies
8. Shell Programming and Scripting
I'm getting different behaviour when executing below script in debug option.
$ cat ss.ksh
ff=$(pwd)
echo " ff : $ff"
$ ksh ss.ksh
ff : /tmp
$ ksh -x ss.ksh
+ + pwd
ff=
+ echo ff :
ff :
I was getting this behaviour in my actuall script i'm able to reproduce this in simple script... (4 Replies)
Discussion started by: luckybalaji
4 Replies
9. Shell Programming and Scripting
Hi,
I have command like this with ooutput :
unix>tnsping abc
TNS Ping Utility for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production on 17-AUG-2011 17:06:11
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/network/admin/sqlnet.ora
... (19 Replies)
Discussion started by: talashil
19 Replies
10. Shell Programming and Scripting
I have the following file:
one two three four
man women
yes no place togo
bad sleep
I need to move all lines that have only two words(columns) in a separate file and the rest in a separate file...
I used :
for $linecont in $(cat $filename); do
echo $linecont > temp
line1='cat... (7 Replies)
Discussion started by: daimne
7 Replies
LEARN ABOUT FREEBSD
gdate
CALENDAR(3) BSD Library Functions Manual CALENDAR(3)
NAME
easterg, easterog, easteroj, gdate, jdate, ndaysg, ndaysj, week, weekday -- Calendar arithmetic for the Christian era
LIBRARY
Calendar Arithmetic Library (libcalendar, -lcalendar)
SYNOPSIS
#include <calendar.h>
struct date *
easterg(int year, struct date *dt);
struct date *
easterog(int year, struct date *dt);
struct date *
easteroj(int year, struct date *dt);
struct date *
gdate(int nd, struct date *dt);
struct date *
jdate(int nd, struct date *dt);
int
ndaysg(struct date *dt);
int
ndaysj(struct date *dt);
int
week(int nd, int *year);
int
weekday(int nd);
DESCRIPTION
These functions provide calendar arithmetic for a large range of years, starting at March 1st, year zero (i.e., 1 B.C.) and ending way beyond
year 100000.
Programs should be linked with -lcalendar.
The functions easterg(), easterog() and easteroj() store the date of Easter Sunday into the structure pointed at by dt and return a pointer
to this structure. The function easterg() assumes Gregorian Calendar (adopted by most western churches after 1582) and the functions
easterog() and easteroj() compute the date of Easter Sunday according to the orthodox rules (Western churches before 1582, Greek and Russian
Orthodox Church until today). The result returned by easterog() is the date in Gregorian Calendar, whereas easteroj() returns the date in
Julian Calendar.
The functions gdate(), jdate(), ndaysg() and ndaysj() provide conversions between the common "year, month, day" notation of a date and the
"number of days" representation, which is better suited for calculations. The days are numbered from March 1st year 1 B.C., starting with
zero, so the number of a day gives the number of days since March 1st, year 1 B.C. The conversions work for nonnegative day numbers only.
The gdate() and jdate() functions store the date corresponding to the day number nd into the structure pointed at by dt and return a pointer
to this structure.
The ndaysg() and ndaysj() functions return the day number of the date pointed at by dt.
The gdate() and ndaysg() functions assume Gregorian Calendar after October 4, 1582 and Julian Calendar before, whereas jdate() and ndaysj()
assume Julian Calendar throughout.
The two calendars differ by the definition of the leap year. The Julian Calendar says every year that is a multiple of four is a leap year.
The Gregorian Calendar excludes years that are multiples of 100 and not multiples of 400. This means the years 1700, 1800, 1900, 2100 are
not leap years and the year 2000 is a leap year. The new rules were inaugurated on October 4, 1582 by deleting ten days following this date.
Most catholic countries adopted the new calendar by the end of the 16th century, whereas others stayed with the Julian Calendar until the
20th century. The United Kingdom and their colonies switched on September 2, 1752. They already had to delete 11 days.
The function week() returns the number of the week which contains the day numbered nd. The argument *year is set with the year that contains
(the greater part of) the week. The weeks are numbered per year starting with week 1, which is the first week in a year that includes more
than three days of the year. Weeks start on Monday. This function is defined for Gregorian Calendar only.
The function weekday() returns the weekday (Mo = 0 .. Su = 6) of the day numbered nd.
The structure date is defined in <calendar.h>. It contains these fields:
int y; /* year (0000 - ????) */
int m; /* month (1 - 12) */
int d; /* day of month (1 - 31) */
The year zero is written as "1 B.C." by historians and "0" by astronomers and in this library.
SEE ALSO
ncal(1), strftime(3)
STANDARDS
The week number conforms to ISO 8601: 1988.
HISTORY
The calendar library first appeared in FreeBSD 3.0.
AUTHORS
This manual page and the library was written by Wolfgang Helbig <helbig@FreeBSD.org>.
BUGS
The library was coded with great care so there are no bugs left.
BSD
November 29, 1997 BSD