How to pad with leading zeros for current time?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to pad with leading zeros for current time?
# 1  
Old 06-27-2012
How to pad with leading zeros for current time?

I'm using cygwin bash to submit scheduled tasks (kinda like cron jobs) in windows and the following script is giving me grief. I need to format the current time with leading zeros before 10AM for the hour field. In this example, I manually typed in "09:50" instead of using the `printf...` statement. Note, however, I get an error in my debug statement when I try to print out the the time. Why is it choking on '09'?

I assume the problem is the "printf" statement because I get that error message twice: once for every occurance of the printf statement (when I prevously had `printf` instead of "09:50"). Could the problem be the %s that windows needs inside the quoted strings? Is not bash supposed to ignore the contents of quoted strings?


I do not intend this to be an octal value!



Code:
h=`date +%H`
m=`date +%M`
let m=m+1
let h=h+0
echo `printf "%-2.2d:%-2.2d" $h $m`
schtasks /delete /tn "vgr_day_build"  /F
schtasks /create /tn "vgr_day_build" /tr "c:\Users\310064858\Documents\philips\bin\rick_croote_nightlyBuilds.bat siegfried_FireWall_01 >d:\views\buildlogs\vgr_day_build_%date:~-4,4%%date:~-10,2%%date:~-7,2%%time:~-11,2%%time:~-8,2%%time:~-5,2%%date:~0,3%.log 2>&1" /sc ONCE /st 09:51
/usr/bin/bash: line 3: let: 09: value too great for base (error token is "09")
/usr/bin/bash: line 4: printf: 09: invalid octal number
00:51
SUCCESS: The scheduled task "vgr_day_build" was successfully deleted.
SUCCESS: The scheduled task "vgr_day_build" has successfully been created.

# 2  
Old 06-28-2012
You are correct, values starting with a leading zero (0) are interpreted as an octal. As the only values allowed in octal are {0..7}, an 8 or a 9 will cause the error message.

Workarounds include stripping the leading zero:
Code:
h="08"
h=`echo $h | sed 's/^0*//'`

or you can explicitly set the base when incrementing:
Code:
h="08"
h=$(( 10#$h + 1 ))

This User Gave Thanks to fpmurphy For This Post:
# 3  
Old 06-28-2012
I've never seen that syntax for setting the base before, thanks.

What I've sometimes done is crammed a '1' on the front then subtracted 100 Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk pad 1 column with leading zero if char > 12

Hello, I got a question. I have several csv files with lots of data in it and for the first column i have EAN codes. The problem that i am facing is that some of these codes have the leading 0 removed so they are 12 or less chars while a EAN code is (always?) 13 chars. For this i used a... (9 Replies)
Discussion started by: SDohmen
9 Replies

2. Shell Programming and Scripting

Help deleting leading zeros in a file

I have a list of numbers extracted and need to delete the leading zeros from them, but when i do so, the command I am using also deletes numbers that end in Zero as well. eg 10, 20, 30, etc this is part of a larger script and the only way I can think of is to try and detect the 10,20 30 etc in... (19 Replies)
Discussion started by: kcpoole
19 Replies

3. Shell Programming and Scripting

Numbers with leading zeros

Hi, i have a variable which conatins values like 00001,0003,00067,00459. I want to use the values one by one and in the same form as they are like 00001,0003,00067,00459. Also can anyone tell me how to increment those numbers by 1,keeping the format as same like 00002,0004,00068,00460.... (5 Replies)
Discussion started by: arijitsaha
5 Replies

4. Shell Programming and Scripting

Pad Zeros at the end

I have number/strings like below input =23412133 output = 234121330000 (depends on the number give at runtime) i need to padd zeros based on runtime input . i tried below printf ' %d%04d\n', "23412133"; But the precision 4 is static here how can i pass this as runtime input. i am... (11 Replies)
Discussion started by: greenworld123
11 Replies

5. Programming

How to right pad with zeros using sprintf?

I need to right-pad with zeros a string by using (s)printf. I looked up the manual and tried with printf("%-19s", buffer); which right-pad the string with spaces. So I tried printf("%019s", buffer); which left-pad the string with zeros. So I tried both printf("%-019s", buffer);... (9 Replies)
Discussion started by: emitrax
9 Replies

6. Shell Programming and Scripting

Help needed in padding leading zeros

Hi all, I have file with numeric values. I need to pad each value with leading zeros such that total lenght of each value is 16. Example: cat tmp.txt 502455 50255 5026 5027 5028 Output 0000000000502455 0000000000050255 0000000000005026 0000000000005027 0000000000005028 Any... (12 Replies)
Discussion started by: jakSun8
12 Replies

7. Shell Programming and Scripting

Pad zeros to a number

Pad zeros to a number and assign it to a variable like i get 1 in $i ,i want it to be $i as 01 (6 Replies)
Discussion started by: anumkoshy
6 Replies

8. UNIX for Dummies Questions & Answers

pad Zeros

Hi can I know command to pad Zeros to a value I get 16 and I need to send 0000000016 (5 Replies)
Discussion started by: mgirinath
5 Replies

9. Shell Programming and Scripting

how to retain leading zeros

Hi All, I am working with a fixed width file Forrmat. C1 Number (10,3) C2 Number (10,3) e.g. c1= 0000000100.000 c2= 0000000020.000 0000000100.0000000000020.000 I have to perform c1 - c2 . i.e. I want answer to be 0000000080.000. but I am loosing the leading zeros( only getting... (3 Replies)
Discussion started by: Manish Jha
3 Replies

10. Shell Programming and Scripting

Leading zeros

How to insert leading zeros into a left-justisfied zip code? e.g. Zip code is written as 60320 which is left-justified to make it be read as 0060320. We have to move it to right-justifiable then insert 2 leading zeros into it... ;) (1 Reply)
Discussion started by: wtofu
1 Replies
Login or Register to Ask a Question