The leading zero can be an issue. [ $MNTH = 01 ] will be true is MNTH is 01 but it will be false if MNTH is just 1. Instead of = you can use -eq like this: [ $MNTH -eq 1 ] and this is an integer compare rather than a string compare. But with many version of ksh a leading zero indicated an octal number so 09 is not a valid number with these versions. This is required by Posix so it may become more common.
I did a little experimenting and these seem to evaluate to true:
Code:
#!/usr/bin/ksh
((MNTH = 1))
MNTH=$(printf "%02d" $MNTH)
#echo $MNTH
if [ MNTH -eq "01" ]; then
echo $MNTH
fi
if [ MNTH -eq "1" ]; then
echo $MNTH
fi
if [ "$MNTH" == 01 ]; then
echo $MNTH
fi
if [ $MNTH == 01 ]; then
echo $MNTH
fi
if [ $MNTH = 01 ]; then
echo $MNTH
fi
Now I have never written a single line of ksh before this so I am not sure in what context those test conditions are being evaluated.
#!/usr/bin/ksh
((MNTH = 9))
MNTH=$(printf "%02d" $MNTH)
echo $MNTH
if [ MNTH -eq "09" ]; then
echo $MNTH
fi
if [ MNTH -eq "9" ]; then
echo $MNTH
fi
if [ "$MNTH" == 09 ]; then
echo $MNTH
fi
if [ $MNTH == 09 ]; then
echo $MNTH
fi
if [ $MNTH = 09 ]; then
echo $MNTH
fi
I 'm testing on Linux but I don't know the version number.
Thank you all for your help it is much appreciated!
Here is my summation of things, please feel free to correct me if I am wrong.
========================================================
The format of $MNTH was `date +%m` which adds the "0"
The calculation with the "0" and without the "0" (01-01, 01-1, 1-1)
Mathmatical calculations will always drop the "0", which to me is a known, I just did not know if unix would hold the "0" in place once formated. (it does not )
With the help of Jim_M, I was able to reformat the date and put the "0" back in place.
Code:
Quote:
Originally Posted by jim mcnamara
add a line
Code:
MNTH=$(printf "%02d" $MNTH)
However, this then provided with the problem - when $YEAR = "2009" and $MNTH = "01", my if statement outputed 00/2008 (which is obviously incorrect )
So.....with the help of Perderabo and his correction....below,
Quote:
Originally Posted by Perderabo
Each item in the test must be separated by spaces.
wrong: [ $MNTH!=01 ]
right: [ $MNTH != 01 ]
Things seem to work know, I tested the following $MNTH and $YEAR values
01/2009 returned as 12/2008
12/2008 returned as 11/2008
10/2008 returned as 09/2008
02/2008 returned as 01/2008
03/2008 returned as 02/2008
Thank you all for your help and support, I think I just felt another ripple on my brain form!
Here is what the if statement looks like now
if [ $MNTH != 01 ]
then
(( MNTH=$MNTH-01 ))
MNTH=$(printf "%02d" $MNTH)
YEAR=$YEAR
else
if [ $MNTH = 01 ]
then
MNTH=12
(( YEAR=$YEAR-1 ))
fi
fi
cml2008
Last edited by cml2008; 01-28-2008 at 02:58 PM..
Reason: adding code
Hi 2 all,
i have had AIX 7.2
:/# /usr/IBMAHS/bin/apachectl -v
Server version: Apache/2.4.12 (Unix)
Server built: May 25 2015 04:58:27
:/#:/# /usr/IBMAHS/bin/apachectl -M
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_worker_module (static)
... (3 Replies)
Hello.
System : opensuse leap 42.3
I have a bash script that build a text file.
I would like the last command doing :
print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt
where :
print_cmd ::= some printing... (1 Reply)
How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address
and column 3 contains “cc” e-mail address to include with same email.
Sample input file, email.txt
Below is an sample code where... (2 Replies)
The system don't boot.
on the screen appears following:
press enter to maintenance (or type CTRL-D to continue)...I checked with format command.
... the slices "0-root","1-swap","2-backup" exist.
...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
logs:
"/home/abc/public_html/index.php"
"/home/abc/public_html/index.php"
"/home/xyz/public_html/index.php"
"/home/xyz/public_html/index.php"
"/home/xyz/public_html/index.php"
how to use "cut" or "awk" or "sed" to get the following result:
abc
abc
xyz
xyz
xyz (8 Replies)
Hi,
I have line in input file as below:
3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL
My expected output for line in the file must be :
"1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL"
Can someone... (7 Replies)
Hi all,
can any one suggest me the script to grep multiple strings from ps -ef
pls correct the below script . its not working/
i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK.
bash-3.00$ ps -ef | grep blu
lscpusr 48 42 ... (11 Replies)
Hi Friends,
Can any of you explain me about the below line of code?
mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`
Im not able to understand, what exactly it is doing :confused:
Any help would be useful for me.
Lokesha (4 Replies)