Richiesta / input utente script shell
Domanda
Questo è uno script di shell korn grezzo che qualcun altro ha scritto. Non so molto sull'uso della sintassi della shell e non sono nemmeno sicuro che ciò sia possibile.
Esiste un modo per eseguire questo file e richiedere la data in modo da non dover accedere manualmente allo script e cambiarlo ogni volta?
Ad esempio, voglio sostituire il " 1/12/09 " con una variabile prelevata dal prompt dell'utente.
#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
Soluzione
Se vuoi essere richiesto (invece di passare la data come parametro), usa la seguente logica (o qualcosa di simile):
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
done
Quel ciclo continuerà a richiedere la data fino a quando l'utente inserisce qualcosa (qualsiasi cosa) diverso da un semplice RITORNO.
Se desideri aggiungere una semplice convalida e stai utilizzando una versione di KSH è KSH93 o meglio, fai qualcosa del genere:
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
Vedi la pagina man di ksh93 per maggiori informazioni.
Altri suggerimenti
In generale da una shell script è possibile accedere agli argomenti della riga di comando come:
./room_xls.pl $1
, $1, ... $N
Quindi potresti sostituire la data hardcoded come:
./myscript 1/12/09
Ed eseguilo come
<*>$ 1 è il primo argomento della riga di comando. Questo arriva fino a $ 9. Dai un'occhiata a questo tutorial per una sintassi ksh più semplice.