Shell Script para mejorar el calendario para aceptar MM, MMM, YYYY

 Vamos a escribir un script de shell para mejorar el calendario para aceptar cualquier mes como MM o MMM o solo el año como AAAA o mes y año. Nuestro script de shell aceptará al menos un argumento que será mes o año. Se utilizarán máximo 2 argumentos que serán mes y año. Se mostrará un calendario mejorado utilizando los argumentos especificados. Vamos a usar los comandos cal y ncal en Linux para mostrar calendarios.

Método 1: Usando el comando cal

Si un usuario quiere una vista rápida del calendario en la terminal de Linux, cal es el comando para usted. De forma predeterminada, el comando cal muestra el calendario del mes actual como salida.

El comando cal en Linux se usa para ver el calendario de un mes específico o de todo el año. Un solo argumento en el comando cal define el año de cuatro dígitos (1-9999) que se mostrará. El mes (1-12) y el año (1-9999) se representan mediante dos parámetros. Si no se dan argumentos, se muestra el mes actual. 

Podemos usar el siguiente comando para saber más sobre la utilidad cal en Linux:

man cal

Por ejemplo:

Acercarse:

  1. comienzo
  2. Comprobar si los argumentos se pasan o no
  3. Si no se pasan argumentos, muestra «Argumentos no válidos y programa de salida»
  4. Si se pasan 2 argumentos entonces
  5. verifique si los primeros argumentos son mayores que 12 y el segundo argumento es mayor que 2021 (año actual).
  6. Si es mayor, muestre «año o mes no válido» y vaya al paso 12
  7. De lo contrario, si solo se pasa un argumento, verifique si es mayor que 12.
  8. Si es mayor a 12 entonces se considera un año.
  9. A continuación, muestra un calendario del año especificado.
  10. de lo contrario, si el argumento es menor que 12, el argumento pasado es un mes.
  11. Muestra el calendario del mes especificado del año actual.
  12. Salida.

A continuación se muestra la implementación usando el comando cal: –

# Shell Script to Enhance the Calendar to Accept 
# MM, MMM, YYYY using cal command

# check whether arguments are passed or not
if [ $# -eq 0 ]
then

        # if arguments are not passed then display this
        echo "Invalid Arguments"
        
        # exit the program
        exit 
fi 

# if 2 arguments are passed
if [ $# -eq 2 ]    
then

    # if argument 1 is greater than 12 or argument 2 
    # is greater than 2021
    if [ $1 -gt 12 -o $2 -gt 2021 ]
    then
    
        # then display invalid month or year
        echo "invalid Year or month"
        
    # else display calendar of the specified month 
    # and year
    else
        ncal $1 $2    
    fi
    
# if only one argument is passed then
else if [ $# -eq 1 ]
then

    # if argument is greater than 12
    if [  $1 -gt 12 ]
    then
        cal $1 # display calendar of specified year
        
    # else display calendar of specified month
    else
        case $1 in #start switch case
            01) m = jan;;
            02) m = feb;;
            03) m = mar;;
            04) m = apr;;
            05) m = may;;
            06) m = jun;;
            07) m = jul;;
            08) m = aug;;
            09) m = sep;;
            10) m = oct;;
            11) m = nov;;
            12) m = dec;;
        esac # end switch case
        echo \" Calander for $1 Month : \"
        
        # display calendar of specified month using -m
        cal -m $1

    fi
fi
fi

Producción:

Método 2: Usando el comando ncal

El comando ncal también se puede usar para mostrar el calendario. El comando ncal tiene la misma funcionalidad que cal, excepto que puede mostrar el calendario verticalmente con semanas en columnas en lugar de horizontalmente. Podemos usar el siguiente comando para saber más sobre la utilidad cal en Linux:

man ncal

Por ejemplo:

En los ejemplos anteriores, en el comando cal o ncal, si el usuario escribe el comando «cal 2» en la terminal, se mostrará todo el calendario del año 0002. Pero para mejorar el calendario, si el usuario ingresa 2 como un argumento, se debe mostrar el segundo mes del año en curso. Usaremos la utilidad cal/ncal para mejorar el calendario para aceptar MM, MMM, YYYY. 

A continuación se muestra la implementación usando el comando ncal: –

# Shell Script to Enhance the Calendar to Accept MM, MMM, YYYY
# using ncal command

# check whether arguments are passed or not
if [ $# -eq 0 ]
then

        # if arguments are not passed then display this
        echo "Invalid Arguments"  
        
        # exit the program
        exit 
fi 

if [ $# -eq 2 ]    # if 2 arguments are passed
then

    # if argument 1 is greater than 12 or argument 2 is 
    # greater than 2021
    if [ $1 -gt 12 -o $2 -gt 2021 ]     
    then
    
        # then display invalid month or year
        echo "invalid Year or month"    
        
    # else display calendar of the specified month and year    
    else
        ncal $1 $2    
    fi
else if [ $# -eq 1 ] # if only one argument is passed then
then
    if [  $1 -gt 12 ]    # if argument is greater than 12
    then
        cal $1 # display calendar of specified year
    else     # else display calendar of specified month
        case $1 in #start switch case
            01) m = jan;;
            02) m = feb;;
            03) m = mar;;
            04) m = apr;;
            05) m = may;;
            06) m = jun;;
            07) m = jul;;
            08) m = aug;;
            09) m = sep;;
            10) m = oct;;
            11) m = nov;;
            12) m = dec;;
        esac # end switch case
        echo \" Calander for $1 Month : \"
        ncal -m $1 # display calendar of specified month using -m

    fi
fi
fi
#end if

Producción:

El comando ncal mostrará un calendario de una manera más mejorada.

En el script, si el usuario ingresa un argumento, verificaremos si es mayor que 12, si es mayor que 12, el argumento se considerará como un año; de lo contrario, el argumento se considerará como un mes. Si no se proporciona ningún argumento, se mostrará «Argumentos no válidos». Si se dan 2 argumentos, denotará un mes y un año. 

Para ejecutar el script de shell, use:

./cal.sh <argument 1> <argument 2>

Ejemplo :

./cal.sh 4
./cal.sh 8 2021
./cal.sh 1999

Otorgue permiso de ejecución al script de shell usando:

chmod +x cal.sh

Por lo tanto, el Shell Script anterior mejorará el calendario para aceptar MM, MMM, YYYY.

Publicación traducida automáticamente

Artículo escrito por shantanujain18 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 *