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
sh(1) General Commands Manual sh(1)
NAME
sh - Shell, the standard command language interpreter
DESCRIPTION
[Tru64 UNIX] Tru64 UNIX provides two command interpreters with the name sh. The XCU5.0 and POSIX.2 compliant command interpreter sh is
available in the file /usr/bin/posix/sh and is described in the sh(1p) reference page. The Bourne shell, historically known as sh, is
available in the file /usr/bin/sh and is described in the sh(1b) reference page.
[Tru64 UNIX] Your initial, or login, shell is determined by your entry in the file /etc/passwd. This file can be changed only by your sys-
tem administrator. You must use whatever procedures are in place at your location to have this entry changed.
[Tru64 UNIX] If available on your system, you may use the passwd -s or the chsh commands to change your login shell.
Note
This option is not available if your site manages passwords through the Network Information Service (NIS) facility. Check with your system
administrator.
[Tru64 UNIX] Subsequent shells spawned from the initial shell depend on the value in the environment variable BIN_SH. If this variable is
set to xpg4, the POSIX shell is started. If this variable is set to svr4, an SVR4 compliant version of the shell is started. If this vari-
able is unset, the Bourne shell is started. If this variable is set to any other value, an error is reported and the results are unpre-
dictable. See the EXAMPLES section for information on setting this variable.
NOTES
[Tru64 UNIX] With Tru64 UNIX Version 4.0 the Korn shell, /usr/bin/ksh is the same as the POSIX shell /usr/bin/posix/sh.
RESTRICTIONS
[Tru64 UNIX] The file /etc/shells must include entries for both the POSIX shell /usr/bin/posix/sh and the Bourne shell, /usr/bin/sh. If
this file is incorrect, see your system administrator.
EXAMPLES
Using the Bourne, Korn, or POSIX shell, to set the variable BIN_SH to use the POSIX/ XCU5.0compliant shell, enter: BIN_SH=xpg4 export
BIN_SH Using the Bourne, Korn, or POSIX shell, to set the variable BIN_SH to use the SVR4 compliant shell, enter: BIN_SH=svr4 export BIN_SH
Using the Bourne, Korn, or POSIX shell, to unset the variable BIN_SH, enter: unset BIN_SH Using the C/ shell, to set the variable BIN_SH to
use the POSIX/XCU5.0 compliant shell, enter: setenv BIN_SH xpg4 Using the C/ shell, to set the variable BIN_SH to use the SVR4 compliant
shell, enter: setenv BIN_SH svr4 Using the C/ shell, to unset the variable BIN_SH, enter: unsetenv BIN_SH
FILES
User profile. Contains user information, including the login shell name. Contains the names of available and permitted shells.
SEE ALSO
Commands: csh(1), ksh(1), Bourne shell sh(1b), POSIX shell sh(1p), passwd(1)
Files: passwd(4), shells(4)
Standards: standards(5)
sh(1)