Converting date +%j into integer


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Converting date +%j into integer
# 1  
Old 01-10-2014
Converting date +%j into integer

Dear community,

i got a problem to get "date +%j" as the right value.
Today is the 10th day of the year.

#./script.sh 2

Code:
#!/bin/bash/
Var1=$(date +%j)
Var2=$1

let result=$Var1+$Var2
echo $Var1 plus $Var2 equals $result

The output of the script is:

010 plus 2 equals 10
010 plus 3 equals 11
and so on.

I tried to declare $Var1 as an integer.
Code:
typeset -i Var1 Var2

The output after the declaration is

8 plus 2 equals 10
8 plus 3 equals 11
and so on.

The result should be 12. I need it for further calculations.

do you got any suggestion or solution for this problem?

sincerely

Oskar
# 2  
Old 01-10-2014
a bug in bash??
Code:
n12:/home/vbe/wks/test/arithmetics $ bash
n12:/home/vbe/wks/test/arithmetics $ let A=$(date +%j)
n12:/home/vbe/wks/test/arithmetics $ echo $A
8
n12:/home/vbe/wks/test/arithmetics $ exit
exit
n12:/home/vbe/wks/test/arithmetics $ echo $0
/usr/dt/bin/dtksh
n12:/home/vbe/wks/test/arithmetics $ let A=$(date +%j)
n12:/home/vbe/wks/test/arithmetics $ echo $A              
10

Did my test on AIX7.1 after seeing on old HP it works (only ksh...)

So change your first line to sh or ksh...
This User Gave Thanks to vbe For This Post:
# 3  
Old 01-10-2014
ok quick update:
Code:
n12:/home/vbe/wks/test/arithmetics $ bash
n12:/home/vbe/wks/test/arithmetics $ date +%j
010
n12:/home/vbe/wks/test/arithmetics $ let A=$(date +%j)
n12:/home/vbe/wks/test/arithmetics $ echo $A
8
n12:/home/vbe/wks/test/arithmetics $  A=$(date +%j)
n12:/home/vbe/wks/test/arithmetics $ echo $A
010
n12:/home/vbe/wks/test/arithmetics $ let B=$A
n12:/home/vbe/wks/test/arithmetics $ echo $B
8
 
Only workaround for now ( I have other things to do...) I can think of is:
n12:/home/vbe/wks/test/arithmetics $ echo "$A + $B" |bc
12

# 4  
Old 01-10-2014
thank you, i had to install ksh first, but now it works fine!

SmilieSmilieSmilie
# 5  
Old 01-10-2014
This is not a bug -- the leading 0 causes the shell to think the number is octal. 010 would be 8 in octal.

You can do string operations to strip off leading 0's, but I tend to take the easy way, slapping a '1' on the front to make it look decimal. Subtract 1000 as part of your math operations.
This User Gave Thanks to Corona688 For This Post:
# 6  
Old 01-13-2014
You could also user typeset to force the variable to be an integer:-
Code:
typeset -i Var1=$(date +%j)

I have noticed a difference in the output from this depending on the OS though.

It seems that AIX (4, 5 and 6) & HP-UX 11 do what I expect, but RHEL (bash & ksh93) computes this to set Var=11

Maybe it's to do with the version of the shell, but AIX 6 has ksh93 available and that works as I expect (value of 13). Something to be tested first. Maybe this would be safer:-
Code:
Var1=`date +%j`
Var1="${Var1##*0}"



Robin

Last edited by rbatte1; 01-13-2014 at 07:15 AM.. Reason: Grammar
# 7  
Old 01-13-2014
@rbatte that last bit will not work for day of the year with a 0 in position 2 or 3. Perhaps this:

Code:
Var1=${Var1#"${Var1%%[!0]*}"}

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting time format as Integer to seconds

Hello, How can we convert date like format 20181004171050 in seconds ? I can able to convert till date but failing for HHMMSS. date -d "20181004" "+%s" output as 1538596800 . But when i add hhmmss it is failing date -d "20181004172000" "+%s" result Invalid date Kindly guide. Regards (16 Replies)
Discussion started by: sadique.manzar
16 Replies

2. Shell Programming and Scripting

Converting String To Integer/Float (weird case)

Hi guys, I'm new here. I have a problem at work. One of our scripts was eventually having a bug and only detected recently. Here's the issue and background: Bash Script which calls AWK script Awk script returns a string as per below (example):var1='00000-123'So, when we convert it, the... (18 Replies)
Discussion started by: sekfarok
18 Replies

3. Shell Programming and Scripting

Converting string to integer

I have a function that is supposed to check for user processes and wait for 0 count before exiting the function. I am sure I have more than one issue in my code, but the stumbling block right now is that I am trying to convert the value of my variable from a string to integer. process_count... (10 Replies)
Discussion started by: MIA651
10 Replies

4. Shell Programming and Scripting

Converting a date to friday date and finding Min/Max date

Dear all, I have 2 questions. I have a file with many rows which has date of the format YYYYMMDD. 1. I need to change the date to that weeks friday date(Ex: 20120716(monday) to 20120720). Satuday/Sunday has to be changed to next week friday date too. 2. After converting the date to... (10 Replies)
Discussion started by: 2001.arun
10 Replies

5. Shell Programming and Scripting

Converting Month into Integer

okay so i run an openssl command to get the date of an expired script. Doing so gives me this: enddate=Jun 26 23:59:59 2012 GMT Then i cut everything out and just leave the month which is "Jun" Now the next part of my script is to tell the user if the the certificate is expired or not... (6 Replies)
Discussion started by: shade917
6 Replies

6. Shell Programming and Scripting

Converting decimal to integer

The shell mentioned below will show a warning if the page takes more than 6 seconds to load. The problem is that myduration variable is not an integer. How do I convert it to integer? myduration=$(curl http://192.168.50.1/mantisbt/view.php?id=1 -w %{time_total}) > /dev/null ; ] && echo... (3 Replies)
Discussion started by: shantanuo
3 Replies

7. Shell Programming and Scripting

Converting integer to String

Hi everyone, I would like to know how to convert an integer to a string. for instance if i=1 i would like to creat a variable called constant1. i want to do this in a for loop so for each value of i, i create a new variable such as constant2, constant3,... and so on. for i in 1 2 3 do ... (1 Reply)
Discussion started by: ROOZ
1 Replies

8. UNIX for Dummies Questions & Answers

Converting a String variable into Integer

Hi, I am passing a variable to a unix function. However when I try to assign the value to another variable like typeset -i I_CACHE_VAL=$2 Is this because of String to Integer conversion? I get an error. Please help me with thsi. Thanks (2 Replies)
Discussion started by: neeto
2 Replies

9. Shell Programming and Scripting

Converting a decimal into integer

Hi all, I'm trying to convert a decimal number into an integer number; I'm doing this: n=`echo |awk '{ print "'"$mem"'"*10}'` where the variable mem is equal to 3.7 I'd like to obtain 37, but the expression above gives me 30. Help please!!!! thx a lot (4 Replies)
Discussion started by: idro
4 Replies

10. Shell Programming and Scripting

command for converting string to integer

Hi ... I am trying to calculate the time needed for a command to execute.. but the resulting value is getting as string.. so i am not able to use "expr " command.. please help me to convert the value to integer so that i can proceed with my script.. Regards esham (1 Reply)
Discussion started by: esham
1 Replies
Login or Register to Ask a Question