Problem with gstat and octal value

Tags
shell scripts

Login to Reply

 
Thread Tools Search this Thread
# 1  
Old 03-21-2018
Problem with gstat and octal value

Here are a few lines from my script. The problem I am having is that the statement for gstat returns this error:

Code:
line 43: [[: 08: value too great for base (error token is "08")

The statement is coming from gstat.
Is there a way to fix it? Apparently -eq 02 is coming up as some octal value, I need it to be recognized as 02.

Apparently in this case the script still works but the error appears, not sure how to get rid of it.

Code:
if [[ "$file" =~ [A-Z] && $CDATE = "Jan" ]]; then jx1="01-January";
#jx1="03-Mar";
yeardir=$CYEAR;
mv "$file" /tmp/Move\ Lists/$dir/$yeardir/$jx1;
elif [[ "$file" =~ [A-Z] && $CDATE = "Feb" && $(/opt/csw/bin/gstat "$file" |grep Mod|awk '{print $2}'|cut -b 6,7) -eq 02 ]];
then jx1="02-February";
yeardir=$CYEAR;
mv "$file" /tmp/Move\ Lists/$dir/$yeardir/$jx1;


Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 03-21-2018 at 07:48 PM.. Reason: Added / Changed CODE tags.
# 2  
Old 03-21-2018
It's always recommended to mention your OS' and shell's versions; that keeps people from guessing.
Assuming bash. Look into its man page:
Quote:
ARITHMETIC EVALUATION
. . .
Constants with a leading 0 are interpreted as octal numbers. . . . Otherwise, numbers take the form [base#]n . . .
So - use a 10# prefix to eliminate your problem.

Some asides:
- the closing fi is missing.
- yeardir could be assigned outside the if construct.
- mv "$file" /tmp/Move\ Lists/$dir/$yeardir/$jx1; could be executed outside as well.
- "$file" =~ [A-Z] is tested twice - unnecessarily.
- grep Mod|awk '{print $2}'|cut -b 6,7 could be condensed into one single awk command.
This User Gave Thanks to RudiC For This Post:
jim mcnamara (03-21-2018)
# 3  
Old 03-22-2018
So should it then look like this?

Code:
if [[ "$file" =~ [A-Z] && $CDATE = "Feb" && $(/opt/csw/bin/gstat "$file" |grep Mod|awk '{print $2}'|cut -b 6,7) -eq 10#02

I believe this probably isn't what you meant?

Moderator's Comments:
Mod Comment Please use CODE tags as required by forum rules!

Last edited by RudiC; 03-22-2018 at 12:29 PM.. Reason: Added CODE tags.
# 4  
Old 03-22-2018
You are right, this

Quote:
Originally Posted by newbie2010
. . .
Code:
if [[ "$file" =~ [A-Z] && $CDATE = "Feb" && $(/opt/csw/bin/gstat "$file" |grep Mod|awk '{print $2}'|cut -b 6,7) -eq 10#02

.
.
.
is not what I meant. Try (untested!):
Code:
if [[ "$file" =~ [A-Z] && $CDATE = "Feb" &&  $(/opt/csw/bin/gstat "$file" |awk '/Mod/ {print "10#" substr ($2, 6, 2}') -eq 02 ]] . . .

The 02 is a valid octal number, while the "command substitution" 's result might not be. Another option might be to suppress the leading 0 by printing 0 + substr (...).
# 5  
Old 03-22-2018
Step back a minute. Is gstat Gnu stat from the OpenCSW packages for Solaris?

Try this convolution instead of the one you were using (original post):

Code:
elif [[ "$file" =~ [A-Z] && $CDATE = "Feb" && $(/opt/csw/bin/gdate +%_m --date="$(/opt/csw/bin/gstat --format=%y "$file")") -eq 02 ]];

This way you get only the file modification time out of gstat (removes the need for both grep and awk); then feed it into gdate which then pops out the month. gdate +%_m also replaces leading zeroes with leading spaces which should get rid of your 08 isn't an octal number problem.

The $(..."$(..."..."...)"...) should look after themselves.

Andrew

PS This is why you should say what OS, etc, you are using.
Login to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Similar Threads More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Who remembers the Compuserve octal, numerical email addresses? wisecracker What is on Your Mind? 0 02-26-2016 03:20 PM
Grep - build character range with octal or hexa representation jcdole Shell Programming and Scripting 4 12-18-2015 02:37 PM
sed Or Grep Problem OR Terminal Problem? Nexeu UNIX for Dummies Questions & Answers 25 02-12-2015 01:18 PM
SED on cygwin not working with Hex or Octal dazhoop Shell Programming and Scripting 7 03-26-2012 11:24 AM
syntax for IF test or AWK for octal sboxtops Shell Programming and Scripting 3 03-03-2012 01:05 PM
Problem with forwarding emails (SPF problem) carwe IP Networking 0 08-16-2011 07:17 AM
Deleting octal values vino.paal UNIX for Dummies Questions & Answers 5 06-15-2011 12:57 AM
Problem with simple octal to decimal code qf_woodfox Homework & Coursework Questions 3 04-07-2011 01:04 PM
Permission bit translator - octal to textual and vice versa newbie_01 Shell Programming and Scripting 4 03-11-2011 01:04 PM
ls switch to view octal permissions?? glev2005 UNIX for Dummies Questions & Answers 1 09-18-2009 12:55 PM
Command to return permissions in octal format pcwiz Shell Programming and Scripting 4 08-23-2009 12:13 AM
user login problem & Files listing problem. pernasivam AIX 1 06-18-2009 10:09 AM
[bash]printf octal instead of decimal dolphin06 Shell Programming and Scripting 3 04-14-2009 07:38 AM
Display permissions in octal format venkatesht UNIX for Dummies Questions & Answers 11 02-13-2009 09:18 AM
octal and strings strider Programming 1 03-06-2006 10:17 AM
All times are GMT -4. The time now is 04:18 PM.

Unix & Linux Forums Content Copyright 1993-2018. All Rights Reserved.
UNIX.COM Login
Username:
Password:  
Show Password





Not a Forum Member?
Forgot Password?