Problem with gstat and octal value


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with gstat and octal value
# 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 08: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:
# 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 01: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 or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. What is on Your Mind?

Who remembers the Compuserve octal, numerical email addresses?

As the title says, who does remember them? I still have my ten digit one and is fully active. IIRC it was the then user's account number, and mine came in 'xxxxxx,xxxx' format where the comma had to be replaced by a period. The text mode __browser__ CIS, (Compuserve Information Srevice), was... (0 Replies)
Discussion started by: wisecracker
0 Replies

2. Shell Programming and Scripting

SED on cygwin not working with Hex or Octal

Hi, I have downloaded a web page that I need to cleanup before passing to xmlstarlet. Using UltraEdit's HEX utility part of my download is as follows: 3C 2F 61 3E 0A 09 0A 09 09 3C 2F 61 3E which in ASCII is </a> </a> I need to locate this string and replace it with just... (7 Replies)
Discussion started by: dazhoop
7 Replies

3. Shell Programming and Scripting

syntax for IF test or AWK for octal

Using korn shell. I am reading a file line by line. If a record has a carriage return (octal 015) then I append the second record to the first record. Not all records have a carriage return. I have the unix shell script working with grep, but when my file has +100,000 records it runs slow. I would... (3 Replies)
Discussion started by: sboxtops
3 Replies

4. UNIX for Dummies Questions & Answers

Deleting octal values

I have some junk values in my files éad. am able to find the octal values as below by using od command. 303 251 265 266 204 211 274 261 244 241 141 144 i want to know how to delete the octal this values . (5 Replies)
Discussion started by: vino.paal
5 Replies

5. Homework & Coursework Questions

Problem with simple octal to decimal code

Hello all I started computer science and C++ programming only 6 weeks ago with no prior knowledge. It's a great language, the only other one apart from English that I hope to speak fluently quite soon. I look forward to participating further on these forums, seeking answers and looking at previous... (3 Replies)
Discussion started by: qf_woodfox
3 Replies

6. UNIX for Dummies Questions & Answers

ls switch to view octal permissions??

Is there seriously not an easy way to do this? you really need a script for it? that is ridiculous! Please someone tell me there is an ls switch to view octal permissions instead of rwx i want 777. (1 Reply)
Discussion started by: glev2005
1 Replies

7. Shell Programming and Scripting

Command to return permissions in octal format

Is there any command that would return the permissions of a file or folder in octal format (e.g. 755, 644, etc.) Thanks (4 Replies)
Discussion started by: pcwiz
4 Replies

8. Shell Programming and Scripting

[bash]printf octal instead of decimal

Hello everybody, I would like to understand why the printf function is returning me an octal value with this command : printf %4.4d 0010 returns 0008 printf %4.4d 10 returns 0010 Thanks for help. (3 Replies)
Discussion started by: dolphin06
3 Replies

9. UNIX for Dummies Questions & Answers

Display permissions in octal format

Hi, Is there any way to display the permissions in octal format rather than "rwxrwxrwx" format. I have a file and i want to see the permissions in octal format. Please help. (11 Replies)
Discussion started by: venkatesht
11 Replies

10. Programming

octal and strings

hi i have a peculiar problem...i have a number of stirngs separated by a '/0'. it looks somethings like: char test="abk\0jsdhj\01234\0" actually i will be reading this from a file or something... im supposed to change the \0 to a ',' but in C the octal representation starts with a '\'...... (1 Reply)
Discussion started by: strider
1 Replies
Login or Register to Ask a Question

Featured Tech Videos