09-27-2005
Trouble using substr function with Bourne shell script
Hi,
I'm a newbie to UNIX scripting and I'm having some trouble compiling my script. I'm using the Bourne Shell and cannot seem to use the substr function correctly. I'm trying to extract the last two digits of a year that's stored in a variable based off of a condition. I've searched the forums and google trying suggestions/formatting, but I keep getting a syntax error that I can't seem to fix. Does anyone see any syntax issues with my substr code (FISCAL_CODE) below?
#!/usr/bin/sh
CURRENT_DATE=`date +%m%d%Y`
CURRENT_YEAR=`date +%Y`
START_YEAR=`expr $CURRENT_YEAR - 1`
#Concatenate the static fiscal year's start/end
#month and day with the formatted years.
START_FY='0701'$START_YEAR
END_FY='0630'$CURRENT_YEAR
#Define the actual fiscal year depending on where
#the current date falls within the fiscal year range.
if [ $CURRENT_DATE -gt $START_FY ]
then
if [ $CURRENT_DATE -lt $END_FY ]
then
FISCAL_YEAR=$CURRENT_YEAR
else
FISCAL_YEAR=`expr $CURRENT_YEAR + 1`
fi
fi
#Define the fiscal code by substringing the last two
#digits of the acutal fiscal year.
FISCAL_CODE=substr($FISCAL_YEAR 3 2)
#FISCAL_CODE=`expr substr $FISCAL_YEAR 3 2`
echo Today is $CURRENT_DATE
echo Current Year is $CURRENT_YEAR
echo Start FY $START_FY
echo End FY $END_FY
echo Fiscal Year is $FISCAL_YEAR
echo Fiscal Code is $FISCAL_CODE
-------------------------------------------------------------------
This is the output I'm viewing:
expr: syntax error
<or> syntax error at line 26: `FISCAL_CODE=substr' unexpected
Today is 09272005
Current Year is 2005
Start FY 07012004
End FY 06302005
Fiscal Year is 2006
Fiscal Code is
If there's anything else I can answer or provide, please let me know. Any assistance would be greatly appreciated.
Thanks,
Eric
10 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
i have this assignment.. and i mad this script but there is something wrong with it.. if anyone can tell me.. watz going on... i would appreciate it.. tHnX in advance..
count=1
val=$2
op=$1
ans=0
if
then
if
then
while
do
... (7 Replies)
Discussion started by: dezithug
7 Replies
2. Shell Programming and Scripting
Hi all,
Can somebody answer the following query
Thanks,
Srinivas
A shell program that takes one or any number of file directory names as input; sorts the directories given as parameters jointly in the ascending or decending order of choice For EX : dips abc etc desc will sort the files... (2 Replies)
Discussion started by: psrinivas
2 Replies
3. UNIX for Dummies Questions & Answers
Hello,
I'm throwing this out there as a novice to the Unix world...I've
been working on a project that requires me to ouput (using the echo command) a list of names in a single column format, but the problem is the input is in row format followed by a blank space...If anyone could give me a... (2 Replies)
Discussion started by: dmhonor914
2 Replies
4. Shell Programming and Scripting
Dear Bourne Shell Expert,
I am trying to change the current working directory from within a Bourne Shell script. Simply enough i thought !
As I am sure you are well aware, Inside the script i echo `pwd` and it seems ok, but the shell spawns another shell to execute this and as such, when my... (10 Replies)
Discussion started by: fawqati
10 Replies
5. Shell Programming and Scripting
Hi,
I am new stuff to learn substr() function through awk for writing the Korn shell script.
Is there a way to copy from XXXX1234.ABCDEF to XXX1234 file names without changing both data files?
I appreciate your time to response this email.
Thanks,
Steve (4 Replies)
Discussion started by: sbryant
4 Replies
6. Shell Programming and Scripting
hi,
i am using the following script to get the last digit of YEAR
OY=`expr substr $YEAR 2 1`
it is showing syntax
Is this wrong or i need to change anything
I am running this in sun solaris unix (7 Replies)
Discussion started by: gjithin
7 Replies
7. Shell Programming and Scripting
I'm writing a shell script in which I need to be able to pull a portion of the file name out. I'm testing with the following code:
x="O1164885.DAT"
y=`ls -ltr *${x}|awk '{print substr($0,3)}'`
echo ${x}|awk '{print substr($0,3)}'
echo "y="$y
I can echo it to the screen just fine but I... (3 Replies)
Discussion started by: ttunell
3 Replies
8. Shell Programming and Scripting
Shell Scripting Gurus,
I am having a hard time :confused: trying to figure out what I am doing wrong in my script. Below is the script snippet. It gives an error when it tries to execute the expression.
a=`expr substr $stringZ 5 10`
#!/bin/bash
echo "Hello"
stringZ="abcABC123ABCabc"... (3 Replies)
Discussion started by: yajaykumar
3 Replies
9. Shell Programming and Scripting
Attempting to write a script to eventually notify me via email for when there is packetloss across the backbone. I am looking for values greater than 0% in the mtr field.
#!/bin/sh
target=www.google.com
date +"%D"_"%T" >> /home/rich/mtr.log
echo "----------------------------------------" >>... (1 Reply)
Discussion started by: closedown
1 Replies
10. UNIX for Dummies Questions & Answers
Hi everyone.
#!/sbin/sh
EXITING()
{
umount /FOLDER
rm -Rf /FOLDER
echo "EXIT"
exit 0
}
EXITING
echo "OK" (8 Replies)
Discussion started by: vacadepollo
8 Replies
LEARN ABOUT PHP
easter_date
EASTER_DATE(3) 1 EASTER_DATE(3)
easter_date - Get Unix timestamp for midnight on Easter of a given year
SYNOPSIS
int easter_date ([int $year = date("Y")])
DESCRIPTION
Returns the Unix timestamp corresponding to midnight on Easter of the given year.
Warning
This function will generate a warning if the year is outside of the range for Unix timestamps (i.e. before 1970 or after 2037).
The date of Easter Day was defined by the Council of Nicaea in AD325 as the Sunday after the first full moon which falls on or after the
Spring Equinox. The Equinox is assumed to always fall on 21st March, so the calculation reduces to determining the date of the full moon
and the date of the following Sunday. The algorithm used here was introduced around the year 532 by Dionysius Exiguus. Under the Julian
Calendar (for years before 1753) a simple 19-year cycle is used to track the phases of the Moon. Under the Gregorian Calendar (for years
after 1753 - devised by Clavius and Lilius, and introduced by Pope Gregory XIII in October 1582, and into Britain and its then colonies in
September 1752) two correction factors are added to make the cycle more accurate.
PARAMETERS
o $year
- The year as a number between 1970 an 2037. If omitted, defaults to the current year according to the local time.
RETURN VALUES
The easter date as a unix timestamp.
EXAMPLES
Example #1
easter_date(3) example
<?php
echo date("M-d-Y", easter_date(1999)); // Apr-04-1999
echo date("M-d-Y", easter_date(2000)); // Apr-23-2000
echo date("M-d-Y", easter_date(2001)); // Apr-15-2001
?>
NOTES
Note
easter_date(3) relies on your system's C library time functions, rather than using PHP's internal date and time functions. As a con-
sequence, easter_date(3) uses the TZ environment variable to determine the time zone it should operate in, rather than using PHP's
default time zone, which may result in unexpected behaviour when using this function in conjunction with other date functions in
PHP.
As a workaround, you can use the easter_days(3) with DateTime and DateInterval to calculate the start of Easter in your PHP time
zone as follows:
<?php
function get_easter_datetime($year) {
$base = new DateTime("$year-03-21");
$days = easter_days($year);
return $base->add(new DateInterval("P{$days}D"));
}
foreach (range(2012, 2015) as $year) {
printf("Easter in %d is on %s
",
$year,
get_easter_datetime($year)->format('F j'));
}
?>
The above example will output:
Easter in 2012 is on April 8
Easter in 2013 is on March 31
Easter in 2014 is on April 20
Easter in 2015 is on April 5
SEE ALSO
easter_days(3) for calculating Easter before 1970 or after 2037 .
PHP Documentation Group EASTER_DATE(3)