Help understanding the script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help understanding the script
# 1  
Old 10-12-2016
Help understanding the script

Could someone please help me in understanding the code below:
Code:
#!/usr/bin/ksh
Month=`date|cut -c5-7`                         
Day=`date|cut -c9-10`                          
Year=`date|cut -c27-28`
Rom2Jul() { case $Month in Feb) Day=$(( $Day+31 ));;
                           Mar) Day=$(( $Day+59 ));;
                           Apr) Day=$(( $Day+90 ));;
                           May) Day=$(( $Day+120 ));;
                           Jun) Day=$(( $Day+151 ));;
                           Jul) Day=$(( $Day+181 ));;
                           Aug) Day=$(( $Day+212 ));;
                           Sep) Day=$(( $Day+243 ));;
                           Oct) Day=$(( $Day+273 ));;
                           Nov) Day=$(( $Day+304 ));;
                           Dec) Day=$(( $Day+334 ));; esac }
Rom2Jul

Current=$(( $Year*365+$Day-2 ))

PrevHostname=''
PrevBackup=0
while read input                               
do Month=${input:0:3}
   Day=${input:4:2}
   Hostname=${input:13:12}
   Rom2Jul
   if [[ ${input:9:1} = ':' ]] then Year=`date|cut -c27-28`; else Year=${input:10:2}; fi
   Backup=$(( $Year*365+$Day ))
   if [[ $PrevHostname = '' ]] then PrevHostname=$Hostname; PrevBackup=$Backup
      else if [[ $PrevHostname != $Hostname ]] then echo $PrevBackup $PrevHostname 
                                                    PrevHostname=$Hostname; PrevBackup=$Backup
              else if (( $Backup > $PrevBackup )) then PrevBackup=$Backup; fi; fi; fi; done 
echo $PrevBackup $PrevHostname

---------- Post updated at 04:54 PM ---------- Previous update was at 04:35 PM ----------

I am specifically trying to understand the
Code:
PrevHostname=''
PrevBackup=0
while read input                               
do Month=${input:0:3}
   Day=${input:4:2}
   Hostname=${input:13:12}

# 2  
Old 10-12-2016
Run the script by setting xtrace and verbose:-
Code:
#!/usr/bin/ksh -xv

If you have any questions even after going over the output, post it here.
# 3  
Old 10-12-2016
Hi,

Code:
Month=${input:0:3}

In value of input variable selects characters starting from 0 to 3.
Suppose input=Hello then Month variable will have Hel as a value .

Please try yoda suggested and LinkHere

Last edited by rbatte1; 10-13-2016 at 07:01 AM.. Reason: Converted CODE tags to ICODE tags
This User Gave Thanks to greet_sed For This Post:
# 4  
Old 10-12-2016
Also, you could replace the first 17 lines of that script with:

Code:
Current=$(( $(date +%y*365+%j) ))

This User Gave Thanks to Chubler_XL For This Post:
# 5  
Old 10-13-2016
That's a strange script, and it is difficult to read/understand. Try e.g. serious indentation, and the proposals given above. For your special question, see here:
Code:
PrevHostname=''                 # preset variable to empty
PrevBackup=0                    # preset variable to 0
while read input                # read variable "input" from stdin
                                # input contents:   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                                # input char count:  01234567890123456789012345 
                                # result in variables:
do Month=${input:0:3}           # ABC
   Day=${input:4:2}             # DE
   Hostname=${input:13:12}      # NOPQRSTUVWX

This User Gave Thanks to RudiC For This Post:
# 6  
Old 10-13-2016
There is another Rom2Jul under the while loop

Should I just delete it, if I use Current=$(( $(date +%y*365+%j) ))

---------- Post updated at 12:19 PM ---------- Previous update was at 12:08 PM ----------

If I change the code to include
Code:
Current=$(( $(date +%y*365+%j) ))

I am getting "stale" message for even those which are not 3 days old. Any help/advise will be appreciated.

Thanks

Last edited by rbatte1; 10-14-2016 at 08:07 AM.. Reason: Changed some CODE tags to ICODE tags
# 7  
Old 10-13-2016
The backup backup Julian date calculation is quite simple if you have GNU date available on your system.

GNU date would allow us to convert date strings in this manor:

Code:
$ date -d "Oct 7 2016"
Fri, Oct 07, 2016 12:00:00 AM

Your calculation would then simply be:

Code:
PrevHostname=''
PrevBackup=0
while read input
do
  if [[ ${input:9:1} = ':' ]] then
     DateStr="${input:0:3} ${input:4:2}"
  else
     DateStr="${input:0:3} ${input:4:2} 20${input:10:2}"
  fi
  Backup=$(( $(date -d "$DateStr" +%y*365+%j) ))

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Understanding a script for sum

Hello, How come the following script adds each numeric value to a total sum ? x=$1 func() { for i in $1 $2 $3; do let x= $x+$i done } func "8 8 8" 9 9 echo $x A.How the program sums the string "8 8 8" if it`s only the first field value ($1)? B.If we define x to be $1... (3 Replies)
Discussion started by: uniran
3 Replies

2. UNIX for Beginners Questions & Answers

Shall script use and understanding

Below script is called as Reducer, I am not sure how it work, can some expert explain me what this script does as i am a beginner. inputfile: hi hi how are are you code: #!/bin/bash lastkey=""; -- what does this mean, because i saw in debug mode it is taking value as hi count=0;... (13 Replies)
Discussion started by: mirwasim
13 Replies

3. Shell Programming and Scripting

Help--understanding the script

Hi, New to this forum, as well as to unix scripting..need help to understand below script ... sendNotice_sp() { ATTACH=${LNXLOG:-} if ; then if ; then mail -s "$ERR_MSG" $ERR_EMAIL_TO < $ATTACH fi else mail -s "$ERR_MSG" $ERR_EMAIL_TO < /dev/null fi } afaik this is sm kind of... (6 Replies)
Discussion started by: gnnsprapa
6 Replies

4. Shell Programming and Scripting

Help understanding the script

Hi Guys, I am new to scripting , I am trying to rebuild a script based on an old script. Can someone help me figure out what the script is doing? This is only a part of the script. I am looking to interpret these two points in the scripts:- 1) test=`echo $?` while I do not... (3 Replies)
Discussion started by: rajsan
3 Replies

5. UNIX for Dummies Questions & Answers

help with understanding script

i am trying to understand this script example. the text does not explain it. can someone tell me briefly what each of the functions do. any help will be appreciated. #!/bin/bash killtree() { local _pid=$1 local _sig=${2-TERM} for _child in $(ps -o pid --no-headers --ppid... (1 Reply)
Discussion started by: iluvsushi
1 Replies

6. Shell Programming and Scripting

Need help understanding this script.

Can someone explain what is happening line by line in this script, particularly after the do statement. The script works, it renames all the files in my directory that has a date in the file name. But I would like to know more about it. #!/bin/bash newdate=12-10-1995 for file in *--* do ... (6 Replies)
Discussion started by: Harleyrci
6 Replies

7. UNIX for Advanced & Expert Users

understanding awk in this script

i am analyzing a query written by another developer ,need to understand part of script am looking at a code ..and it converts comma files to pipe delimited and also takes away quotes from any columns, source field format: 2510,"Debbie",NewYork changes to target: 2510|Debbie|NewYork ... (1 Reply)
Discussion started by: coolrock
1 Replies

8. Shell Programming and Scripting

Need help for understanding of script

# sub: find block (in cols), return line-numbers (begin-end) or 0 if notfound sub findb{ my ($exp1,$col1,$exp2,$col2)= @_; # $exp = expression to find, $col - column to search in my $cnt=0; my ($val1,$val2); my ($beg,$end); for($cnt=1;$cnt<=65536;$cnt++){ $val1 =... (3 Replies)
Discussion started by: suvenduperl
3 Replies

9. Shell Programming and Scripting

Help understanding a script

Hello everybody, Can anybody tell me of what "~" refers to in the below code snippet. lsvg $vgNAME | awk 'BEGIN {freeDISK=1} {if (($4 ~ /PP/ && $5 ~ /SIZE/) || ($4 ~ /FREE/ && $5 ~ /PPs/)) {freeDISK *= $6 }} END {print freeDISK*1024 }' Thanks in advance, (6 Replies)
Discussion started by: tenderfoot
6 Replies

10. UNIX for Dummies Questions & Answers

Need help understanding script command

We use a UNIX-based system (Lawson) at work and I was given this command to request a data extract from the db admin. The only thing I really understand is the last line as it appears to be joining the files created from the first three lines into one. Is there anyone who can help me breakdown the... (4 Replies)
Discussion started by: KGee
4 Replies
Login or Register to Ask a Question