## need to keep the "0" in "01"

need to keep the "0" in "01"
# 8
01-26-2008
01 and 1 are numerically equal, so should you be comparing numbers or strings? ''01" is not equal to "1", or does ksh not distinguish the difference?

On the same hand, this:

MNTH=\$MNTH-01

seems the same as:

MNTH=\$MNTH-1

I would think the leading 0 is silently dropped from the equation.
# 9
01-26-2008
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.
 Perderabo View Public Profile for Perderabo Find all posts by Perderabo
# 10
01-26-2008
I did a little experimenting and these seem to evaluate to true:

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.
# 11
01-26-2008
Yeah but 1 in base 10 equals 1 in base 8. Try it with 09 to see if your ksh treats leading zeros as indicating octal. Also post your os version.
 Perderabo View Public Profile for Perderabo Find all posts by Perderabo
# 12
01-26-2008
These all seem to evaluate to true:

I 'm testing on Linux but I don't know the version number.
# 13
01-28-2008
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
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
 cml2008 View Public Profile for cml2008 Find all posts by cml2008

## 1. AIX

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) ...

## Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

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...

## Using "mailx" command to read "to" and "cc" email addreses from input file

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...

## The slices "usr", "opt", "tmp" disappeared!!! Help please.

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. :(

## how to use "cut" or "awk" or "sed" to remove a string

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

## awk command to replace ";" with "|" and ""|" at diferent places in line of file

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...

## ps -ef | grep "string1" "string2" " "string3"

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 ...

## cat \$como_file | awk /^~/'{print \$1","\$2","\$3","\$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print \$1","\$2","\$3","\$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone

## Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print \$2}'`"

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