Pregunta

Este es un script de shell korn crudo que alguien más escribió. No sé mucho sobre el uso de la sintaxis de shell y ni siquiera estoy seguro de si esto es posible.

¿Hay alguna forma de que ejecute este archivo y se me solicite la fecha para no tener que ingresar manualmente al script y cambiarlo cada vez?

Por ejemplo, quiero reemplazar el "12/12/09" con una variable que se toma de una solicitud de usuario.

#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
¿Fue útil?

Solución

Si desea que se le solicite (en lugar de pasar la fecha como parámetro), use la siguiente lógica (o algo similar):

date=
while [ -z $date ]
do
    echo -n 'Date? '
    read date
done

Ese ciclo continuará solicitando la fecha hasta que el usuario ingrese algo (cualquier cosa) que no sea un RETORNO simple.

Si desea agregar una validación simple y está utilizando una versión de KSH que es KSH93 o mejor, haga algo como esto:

date=
while [ -z $date ]
do
    echo -n 'Date? '
    read date
    if [[ $date =~ ^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}$ ]]
    then
        break
    fi
    date=
done

Consulte la página del manual de ksh93 para más información.

Otros consejos

En general, desde una línea de comandos de script de shell se puede acceder a argumentos como:

./room_xls.pl $1
, $1, ... $N

Para que pueda reemplazar la fecha codificada como:

./myscript 1/12/09

Y ejecútalo como

<*>

$ 1 es el primer argumento de línea de comando. Esto sube a $ 9. Consulte este tutorial para obtener una sintaxis ksh más básica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top