Working with let command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Working with let command
# 1  
Old 02-06-2017
Working with let command

Hi,

I need to find out the day of the year and it always needs to be 3 digits:

Code:
#!/bin/ksh
doy=`date '+%j'`
let doy=$doy-1
echo doy

Output is 36, but I need it to print as 036

Appreciate any help on this.
# 2  
Old 02-06-2017
Quote:
Originally Posted by Prasannag87
Hi,

I need to find out the day of the year and it always needs to be 3 digits:

Code:
#!/bin/ksh
doy=`date '+%j'`
let doy=$doy-1
echo doy

Output is 36, but I need it to print as 036

Appreciate any help on this.
I believe that the output of that script would always be:
Code:
doy

and never:
Code:
36

If you change:
Code:
echo doy

to:
Code:
printf '%03d\n' $doy

you should get something closer to what you want.
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 02-06-2017
Thanks a lot!!
Actually, I need to derive a filename from it.

${FILE_NAME_WO_EXTN}_${year}${doy}.ZIP. Can you please help me how can I use it here
# 4  
Old 02-06-2017
Maybe something more like:
Code:
#!/bin/ksh
FILE_NAME_WO_EXTN="whatever"
YrDoy=`date '+%Y%j'`
filename="${FILE_NAME_WO_EXTN}_$((YrDoy - 1)).ZIP"
printf 'filename has been set to "%s"\n' "$filename"

Note, however, that this (and your earlier code) will probably not do what you want on January 1st each year.

Note also, that if you were calling date twice to assign values to year and doy (or any other two time/date values), that is dangerous. If the script is run close to midnight, there is always a chance that two or more invocations of date will be run on different days (or months, or even years). Without knowing how this string will be used and when your script will be invoked, it is hard to guess at whether or not this will be a problem in your environment.

But, getting the year and Julian day together does get rid of your problem with leading zeros being stripped by the decrement. If you don't want to use printf and you're dealing with non-negative integral values, you could also use typeset to specify that expansions of a given variable are to be right justified with zero fill to a given number of digits. For example, with ksh, the sequence of commands:
Code:
x=32
typeset -RZ3 x
echo "$x"

produces the output:
Code:
032

This User Gave Thanks to Don Cragun For This Post:
# 5  
Old 02-06-2017
Thanks!!
YrDoy=`date '+%Y%j'` works perfectly for me!!
# 6  
Old 02-06-2017
Should your date command offer the -d option to supply a target date, this might come in handy and also handle the 1. January problem:
Code:
echo ${FILE_NAME_WO_EXTN}_$(date '+%Y%j' -d yesterday).ZIP
file_name_wo_extn_2017036.ZIP

This User Gave Thanks to RudiC For This Post:
# 7  
Old 02-06-2017
If the ksh being used is a recent version (such as 93u+ 2012-08-01), you could also use:
Code:
filename="$(printf '%s_%(+%Y%j)T.ZIP' "$FILE_NAME_WO_EXTN" yesterday)"

This User Gave Thanks to Don Cragun For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Execute ssh command with additional terminal command to any remote user not working script

Hello i am having an issue with bash script and this is the code now=$(cat hosts1.txt | awk '{print $2;}') while read n ;do ssh root@$now 'useradd test1; echo -e "test1\ntest1" | passwd test1 && echo "test1 ALL=(ALL:ALL) ALL" >> /etc/sudoers' When i execute only part with cat, it... (8 Replies)
Discussion started by: tomislav91
8 Replies

2. UNIX for Dummies Questions & Answers

Shell script not working but command works in command prompt

Hi everyone I have a problem with my script If I try directly this command /usr/bin/nice -n 19 mysqldump -u root --password="******" wiki_schneider -c | nice -n 19 gzip -9 > /point_de_montage/$(date '+%Y%m%d')-wiki-db.sql.gz It works But if I simply add this command in a script and... (8 Replies)
Discussion started by: picemma
8 Replies

3. Shell Programming and Scripting

Maxdepth command not working in AIX.Need alternative solution for this command

Hi All, I am trying to select 30 days older files under current directory ,but not from subdirectory using below command. find <Dir> -type f -mtime + 30 This command selecting all the files from current directory and also from sub directory . I read some documention through internet ,... (1 Reply)
Discussion started by: kommineni
1 Replies

4. Shell Programming and Scripting

Working of command

What does the command do lpr -Pqpr *.jpg do ? (1 Reply)
Discussion started by: Nabeel Nazir
1 Replies

5. Shell Programming and Scripting

help with shell script: cp command not working, but mv command works...

Hello. I would like to ask your help regarding the cp command. We are using a cp command to create a back-up copy of our file but to no avail. It's just not working. We already checked the file and directory permissions and all seems correct. We have a script (ftp.script) which calls on... (1 Reply)
Discussion started by: udelalv
1 Replies

6. Shell Programming and Scripting

Need help! command working ok when executed in command line, but fails when run inside a script!

Hi everyone, when executing this command in unix: echo "WM7 Fatal Alerts:", $(cat query1.txt) > a.csvIt works fine, but running this command in a shell script gives an error saying that there's a syntax error. here is content of my script: tdbsrvr$ vi hc.sh "hc.sh" 22 lines, 509... (4 Replies)
Discussion started by: 4dirk1
4 Replies

7. UNIX for Advanced & Expert Users

command for recently modified files - "find" command not working

I have three files a.txt , b.txt , c.txt in a directory called my_dir1 .These files were created before two or three months . I have a tar file called my_tar1.tar which contains three files a.txt , b.txt , d.txt . Somebody untarred the my_tar1.tar into my_dir1 directory. So existing two files were... (1 Reply)
Discussion started by: joe.mani
1 Replies

8. Shell Programming and Scripting

cp command not working

Hi Guys, I have about 12000 files in a folder and I want to copy these to another folder. I am using the cp command to do this but it errors out saying cp -- argument list too long. Is there any way to get around this? I don't want to do a mv but use only cp. Thanks (9 Replies)
Discussion started by: npatwardhan
9 Replies

9. Solaris

ls command not working

Hi, I have installed opensolaris 10 in VMware. Everything is fine except ls command is not working. It is not displaying any files and directories. Sorry if the question is soo trivial. (8 Replies)
Discussion started by: mayahari
8 Replies

10. Solaris

last command not working

I have a Solaris 8 Ultra 1 on my network that we use as a utility server. The last command, which looks in the /var/adm/wtmpx file, is not working. When I do a last, the latest entry is dated June 3, but the /var/adm/wtmpx file is dated whenever a login is successful (verified by typing a... (3 Replies)
Discussion started by: antalexi
3 Replies
Login or Register to Ask a Question