Shell Script para mostrar la hora en Word

Linux/Unix tiene la funcionalidad incorporada para mostrar la hora actual. Por lo general, Linux muestra la hora actual en formato general en lugar de palabra, y con esto puede que algún usuario no esté de acuerdo. 

Entonces, para mostrar la hora actual en un formato mejor y más bonito, aquí se proporciona un script bash. Muestra la hora actual en formato de 12 horas que estará en estilo de palabra en lugar de general. 

Si ejecutamos directamente el comando de tiempo en Linux o Unix, obtendrá un resultado como el siguiente 

Command: date +%r
Output: 11:02:08 PM IST

Nuestra tarea es mostrar el tiempo en Word:

Ejemplo:

Current Time is :  02:03:25 AM IST

Time in Word is : Two hour Three minutes Twenty-Five second AM

Enfoque del código de secuencia de comandos: para escribir la secuencia de comandos para mostrar la hora en el mundo, necesitamos algunos comandos simples incorporados de Linux como «fecha», «eco»,

  1. Algunas secuencias de comandos de shell básicas y, a través de esto, siga los pasos a continuación para escribir el código de la secuencia de comandos.
  2. Obtenga todos los componentes de tiempo como hora, minutos y segundos en diferentes variables.
  3. Haga una array de strings que tenga el número del 0 al 19 en una palabra y use esta palabra usando el índice de la array.
  4. Cree otra array de strings que contengan el valor como 0,10,20,30,40,50,60 en Word.
  5. Ahora, cambie el formato de 24 horas a un formato de 12 horas usando una instrucción if-else.
  6. Cree una función que tome un argumento entero y devuelva ese entero en palabra (aquí el número puede tener hasta 2 dígitos porque en el tiempo solo hay un número de hasta 2 dígitos).
  7. Ahora, convierta todos los componentes del tiempo en la palabra e imprima la string completa de tiempo usando el comando «echo».

Código de secuencia de comandos:  

# ## bash script to display Time in word 

# print current time in original function format of Linux/Unix
echo "Current Time is : " `date +%r`
echo 

# getting hour, minutes and seconds value in separate as integer
hour=`date +%-H`
minutes=`date +%-M`
seconds=`date +%-S`
post='AM'

# create array of strings two show time in word 
time=(Zero One Two Three Four Five Six Seven Eight Nine 
        Ten Eleven Twelve Thirteen Fourteen Fifteen 
        Sixteen Seventeen Eighteen Nineteen)
        
time_ten=(Zero Ten Twenty Thirty Forty Fifty Sixty)


# check hour is greater than "12" or not
# if it than use 12-hour format to show the current time
if [[ $hour -gt 11 ]] 
then 
    let "hour -= 12"
    post="PM"
fi

# check if hour is 00 then print 12AM 
if [[ $hour -eq 0 ]] 
then 
    let "hour = 12"
fi


# Function for get current hour,minutes and seconds in words
function getNumber(){
    
    # check condition when time is less than 20 and get value directly from array
    if [[ $1 -lt 20 ]] 
    then 
        timeInWord=${time[$1]}
    else
        # else block when time is greater than 20 ( minutes and seconds can be up to 59)
        f=`expr $1 / 10`
        s=`expr $1 % 10`
        
        # check condition when first part of the time is zero than we don't have to print that value
        if [[ $s -eq 0 ]] 
        then  
            timeInWord=${time_ten[$f]}
        else
            timeInWord="${time_ten[$f]}-${time[$s]}"
        fi
    fi
}

# make gloabal variable for timeInWord
timeInWord = "Geeks For Geeks"

# get hour in word
getNumber $hour
hourInWord=$timeInWord

# get minutes in word
getNumber $minutes
minutesInWord=$timeInWord

# get seconds in word
getNumber $seconds
secondsInWord=$timeInWord


# print time in usual and simple word format in one line
echo "Time in Word is : $hourInWord hour $minutesInWord minutes $secondsInWord second $post"

# END

Producción: 

Display Time in Word

Publicación traducida automáticamente

Artículo escrito por aditya32123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *