Echo date variable from data input to a script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Echo date variable from data input to a script
# 1  
Old 12-07-2010
Echo date variable from data input to a script

Hi, I'm trying to make a script which you type the year, select the month and day and then create the date in the format 2010-12-7.
Code:
#!/bin/bash

dia () {
echo " Seleccione el dia:"
select file in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Salir
do
case $file in
"1") d=1 ; fecha ;;
"2") d=2 ; fecha ;;
"3") d=3 ; fecha ;;
"4") d=4 ; fecha ;;
"5") d=5 ; fecha ;;
"6") d=6 ; fecha ;;
"7") d=7 ; fecha ;;
"8") d=8 ; fecha ;;
"9") d=9 ; fecha ;;
"10") d=10 ; fecha ;;
"11") d=11 ; fecha ;;
"12") d=12 ; fecha ;;
"13") d=13 ; fecha ;;
"14") d=14 ; fecha ;;
"15") d=15 ; fecha ;;
"16") d=16 ; fecha ;;
"17") d=17 ; fecha ;;
"18") d=18 ; fecha ;;
"19") d=19 ; fecha ;;
"20") d=20 ; fecha ;;
"21") d=21 ; fecha ;;
"22") d=22 ; fecha ;;
"23") d=23 ; fecha ;;
"24") d=24 ; fecha ;;
"25") d=25 ; fecha ;;
"26") d=26 ; fecha ;;
"27") d=27 ; fecha ;;
"28") d=28 ; fecha ;;
"29") d=29 ; fecha ;;
"30") d=30 ; fecha ;;
"31") d=31 ; fecha ;;
"Salir") exit 1;;
 *)
    echo "ERROR: Seleccione correctamente... "
    dia;;
esac
done
}

mes () {
echo " Seleccione el mes:"
select file in enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre Salir
do
case $file in
"enero") m=1 ; dia ;;
"febrero") m=2 ; dia ;;
"marzo") m=3 ; dia  ;;
"abril") m=4 ; dia  ;;
"mayo") m=5 ; dia  ;;
"junio") m=6 ; dia  ;;
"julio") m=7 ; dia  ;;
"agosto") m=8 ; dia  ;;
"septiembre") m=9 ; dia  ;;
"octubre") m=10 ; dia  ;;
"noviembre") m=11 ; dia  ;;
"diciembre") m=12 ; dia  ;;
"Salir") exit 1;;
 *)
    echo "ERROR: Seleccione correctamente... "
    mes;;
esac
done
}

anno () {
echo " Seleccione la anno, insertando las dos ultimas cifras:"
read yshort

if [[ $( echo $yshort | sed 's/^[-+0-9][0-9]*//' | wc -c ) -ne 1 ]]; then echo "ERROR: Introduzca correctamente dos caracteres numericos." && exit 1; fi

if [[ $( expr length $yshort) -ne 2 ]] ; then echo "ERROR: Introduzca SOLO dos caracteres" && exit 1 ;fi
Y=20$yshort
}

fecha () {
fecha=`echo " $Y-$m-$d"`
echo $fecha
exit 0
}

main () {

anno
mes
dia

}

main

The problem? Simple, I want to select the day regarding the month, I mean, to print 30 days if you selected the month of 30 days and so on.

Any help on how to change my script?
Thanks in advance.
# 2  
Old 12-07-2010
use the cal command !
# 3  
Old 12-07-2010
Hi,

Not sure on how to use cal command...:-(

---------- Post updated at 09:58 AM ---------- Previous update was at 09:49 AM ----------

As far as I know cal only display data.. what I want is:

- 1st you select the year.
- late you select the month, and here comes the problem
- I need to print only the days regarding the selected month.

Understand? This script is interactive.

Thanks
# 4  
Old 12-07-2010
Which is what cal does:
Code:
raz:/home/vbe $ cal 12 2009
   December 2009
 S  M Tu  W Th  F  S
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

The thing is quite different if lets say you want to know what week day is the 15th of dec 2009... there is a bit of encoding to do from cal results...
# 5  
Old 12-07-2010
Hi Vbe,
Sometimes my english sucks.. dont know if I couldn't explain what I want or you dont understand me what I write..:-)
The code below does:
1- Ask you for the las two characters of the year. --> I get the year VAR. (2010)
2- Is shows all months on console, so you select the desired month. --> I get month VAR (12)
3- It shows the 31 days on console, so you select the desired day --> I get here the day VAR (7)
But if you select a month with 30 days, the 3er part shows you 31 days.. that's the point. I want to print on the 3er part of the script the days the selected month have and I don't know how to do it.

Thanks

---------- Post updated at 10:48 AM ---------- Previous update was at 10:09 AM ----------

OK, here's my ugly code.. but at least works:

Code:
#!/bin/bash

dia () {
clear
echo $m

if  [[ $m -eq 1 || $m -eq  3 || $m -eq 5 || $m -eq 7 || $m -eq 8 || $m -eq 10 || $m -eq 12 ]] ;then

echo " Seleccione el dia:"
select file in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Salir
do
case $file in
"1") d=1 ; fecha ;;
"2") d=2 ; fecha ;;
"3") d=3 ; fecha ;;
"4") d=4 ; fecha ;;
"5") d=5 ; fecha ;;
"6") d=6 ; fecha ;;
"7") d=7 ; fecha ;;
"8") d=8 ; fecha ;;
"9") d=9 ; fecha ;;
"10") d=10 ; fecha ;;
"11") d=11 ; fecha ;;
"12") d=12 ; fecha ;;
"13") d=13 ; fecha ;;
"14") d=14 ; fecha ;;
"15") d=15 ; fecha ;;
"16") d=16 ; fecha ;;
"17") d=17 ; fecha ;;
"18") d=18 ; fecha ;;
"19") d=19 ; fecha ;;
"20") d=20 ; fecha ;;
"21") d=21 ; fecha ;;
"22") d=22 ; fecha ;;
"23") d=23 ; fecha ;;
"24") d=24 ; fecha ;;
"25") d=25 ; fecha ;;
"26") d=26 ; fecha ;;
"27") d=27 ; fecha ;;
"28") d=28 ; fecha ;;
"29") d=29 ; fecha ;;
"30") d=30 ; fecha ;;
"31") d=31 ; fecha ;;
"Salir") exit 1;;
 *)
    echo "ERROR: Seleccione correctamente... "
    dia;;
esac
done

fi

if  [[ $m -eq 4 || $m -eq 6 || $m -eq 9 || $m -eq 11 ]] ;then
echo " Seleccione el dia:"
select file in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Salir
do
case $file in
"1") d=1 ; fecha ;;
"2") d=2 ; fecha ;;
"3") d=3 ; fecha ;;
"4") d=4 ; fecha ;;
"5") d=5 ; fecha ;;
"6") d=6 ; fecha ;;
"7") d=7 ; fecha ;;
"8") d=8 ; fecha ;;
"9") d=9 ; fecha ;;
"10") d=10 ; fecha ;;
"11") d=11 ; fecha ;;
"12") d=12 ; fecha ;;
"13") d=13 ; fecha ;;
"14") d=14 ; fecha ;;
"15") d=15 ; fecha ;;
"16") d=16 ; fecha ;;
"17") d=17 ; fecha ;;
"18") d=18 ; fecha ;;
"19") d=19 ; fecha ;;
"20") d=20 ; fecha ;;
"21") d=21 ; fecha ;;
"22") d=22 ; fecha ;;
"23") d=23 ; fecha ;;
"24") d=24 ; fecha ;;
"25") d=25 ; fecha ;;
"26") d=26 ; fecha ;;
"27") d=27 ; fecha ;;
"28") d=28 ; fecha ;;
"29") d=29 ; fecha ;;
"30") d=30 ; fecha ;;
"Salir") exit 1;;
 *)
    echo "ERROR: Seleccione correctamente... "
    dia;;
esac
done

fi

if  [[ $m -eq  2  ]] ;then
echo " Seleccione el dia:"
select file in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Salir
do
case $file in
"1") d=1 ; fecha ;;
"2") d=2 ; fecha ;;
"3") d=3 ; fecha ;;
"4") d=4 ; fecha ;;
"5") d=5 ; fecha ;;
"6") d=6 ; fecha ;;
"7") d=7 ; fecha ;;
"8") d=8 ; fecha ;;
"9") d=9 ; fecha ;;
"10") d=10 ; fecha ;;
"11") d=11 ; fecha ;;
"12") d=12 ; fecha ;;
"13") d=13 ; fecha ;;
"14") d=14 ; fecha ;;
"15") d=15 ; fecha ;;
"16") d=16 ; fecha ;;
"17") d=17 ; fecha ;;
"18") d=18 ; fecha ;;
"19") d=19 ; fecha ;;
"20") d=20 ; fecha ;;
"21") d=21 ; fecha ;;
"22") d=22 ; fecha ;;
"23") d=23 ; fecha ;;
"24") d=24 ; fecha ;;
"25") d=25 ; fecha ;;
"26") d=26 ; fecha ;;
"27") d=27 ; fecha ;;
"28") d=28 ; fecha ;;
"Salir") exit 1;;
 *)
    echo "ERROR: Seleccione correctamente... "
    dia;;
esac
done


fi
}

mes () {
clear
echo " Seleccione el mes:"
select file in enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre Salir
do
case $file in
"enero") m=1 ; dia ;;
"febrero") m=2 ; dia ;;
"marzo") m=3 ; dia  ;;
"abril") m=4 ; dia  ;;
"mayo") m=5 ; dia  ;;
"junio") m=6 ; dia  ;;
"julio") m=7 ; dia  ;;
"agosto") m=8 ; dia  ;;
"septiembre") m=9 ; dia  ;;
"octubre") m=10 ; dia  ;;
"noviembre") m=11 ; dia  ;;
"diciembre") m=12 ; dia  ;;
"Salir") exit 1;;
 *)
    echo "ERROR: Seleccione correctamente... "
    mes;;
esac
done
}

anno () {
clear
echo " Seleccione la anno, insertando las dos ultimas cifras:"
echo -n "20"
read yshort

if [[ $( echo $yshort | sed 's/^[-+0-9][0-9]*//' | wc -c ) -ne 1 ]]; then echo "ERROR: Introduzca correctamente dos caracteres numericos." && exit 1; fi

if [[ $( expr length $yshort) -ne 2 ]] ; then echo "ERROR: Introduzca SOLO dos caracteres" && exit 1 ;fi
Y=20$yshort
}

fecha () {
fecha=`echo "$Y-$m-$d"`
exit 0
}

main () {
clear
anno
mes
dia

}

main

# 6  
Old 12-07-2010
Have a look at the following thread especially at the code provided in post #9 :

By "use cal", i was thinking : use it to validate that the entered date is OK (also handle leap year)

Code:
echo "Enter the year on 4 digit) :"
read y
echo "Enter the month on 2 digit) :"
read m
echo "Enter the day on 2 digit) :"
read d

chk_date(){
typeset -i y m d
y="${1%????}" ; t="${1%??}" ; m="${t#$y}" ; d="${1#??????}"
cal $m $y 2>/dev/null | tail +3 | sed -e 'N;N;N;N;N;s/\n/ /g' | grep " $d" >/dev/null 2>&1 && return 0 || return 1
}

chk_date "$y$m$d" && echo "Date Valide" || echo "Date not Valide"

Of course this short code does not behave exactly the way you want, but it gives some clue... and it handles leap year Smilie

---------- Post updated at 05:56 PM ---------- Previous update was at 05:50 PM ----------

Of course if you have some recent date tools that can handle it better, you should of course use it instead of my hugly code Smilie
This User Gave Thanks to ctsgnb For This Post:
# 7  
Old 12-07-2010
Umm.. very interesting... Thanks..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Enhance existing script: Extract Multiple variables & Input in an echo string

Hi Experts I need your help to optimize my script to execute better as I have nearly 1M records & the script is taking close to 40 minutes to execute, so would need support on a faster alternative. Input: file {"house":"1024","zip":"2345","city":"asd","country":"zzv"}... (2 Replies)
Discussion started by: nk1984
2 Replies

2. Shell Programming and Scripting

Variable input to awk script

Hi guys, I wrote the following function to compare two csv files column by column. However, sometimes the input needs to be sorted before parsing it to awk. I can do this by changing the awk arguments, but I would like to make this variable if possible. The below doesn't work since the... (3 Replies)
Discussion started by: Subbeh
3 Replies

3. UNIX for Dummies Questions & Answers

UNIX shells script to echo out the date value

I appreciate if someone answer this question for my learning purpose: Given a filename structure of a COUNTRY CODE, file type, date (YYYYMMDD) and two digit attempt number with an extension of ".dat", write a UNIX shells script to echo out the date value. Example: ... (1 Reply)
Discussion started by: shumail
1 Replies

4. Shell Programming and Scripting

Script to get previous date for the given input date..

hi all, need a script or command to get the previous date for the given input date... like in my script i will pass date as input parameter like 2014-12-01 and i want the output as previous date.. ie.. 2014-11-30 (2 Replies)
Discussion started by: hemanthsaikumar
2 Replies

5. Shell Programming and Scripting

Input date on script

How can I allow users to change the date and time in a script? Say the user1 wil login and he will be inputting the desired date (example format below). I will need this script so the user can login and change the date anytime during the day. I will not allow him to use any command except the date... (2 Replies)
Discussion started by: lhareigh890
2 Replies

6. Shell Programming and Scripting

Script asks to input data

Hi, I have three different files about a warehouse's stock status. Each file shows storage locations, stored product names, quantity of the part and at last column, its price. When there is a change in price, I open those files one by one, search related product name at each row and change... (4 Replies)
Discussion started by: baris35
4 Replies

7. Shell Programming and Scripting

Need script to take input from file, match on it in file 2 and input data

All, I am trying to figure out a script to run in windows that will allow me to match on First column in file1 to 8th Column in File2 then Insert file1 column2 to file2 column4 then create a new file. File1: 12345 Sam 12346 Bob 12347 Bill File2:... (1 Reply)
Discussion started by: darkoth
1 Replies

8. Shell Programming and Scripting

problem piping input to script with echo

I am trying to have a script run without interaction from the command line. So in my script i have a line like this echo -e "\n\n\ny\ny\n" | ./script the goal being the ability to mimic 3 Enter presses and 2 'y/n' responses with 'y' followed by enter. For some reason tho, it is not... (1 Reply)
Discussion started by: mcdef
1 Replies

9. Shell Programming and Scripting

Help with Creation of Script to Input Separators in Data

Hi all, I have one problem that is preparing datas so I can run a script to extrat informations for my statistic reports. I receive some datas, that are informations mixed and I need to separate them to analyse. This is an exemple of datas:... (8 Replies)
Discussion started by: Alexis Duarte
8 Replies

10. Shell Programming and Scripting

Script to find files on a given input date

Hello gurus, I need to write a script to find out all the file that got changed on a specific folder since a given input date (Date to be given as Input) Thanx (1 Reply)
Discussion started by: ar.karan
1 Replies
Login or Register to Ask a Question