Shell usuário roteiro prompt de entrada /
Pergunta
Este é um script shell Korn bruto que alguém escreveu. Eu não sei muito sobre usando a sintaxe shell e eu nem tenho certeza se isso é possível.
Existe alguma maneira para eu executar esse arquivo e ser solicitado para a data para que eu não tenho que ir manualmente no script e alterá-lo cada vez?
Por exemplo, eu quero substituir o "1/12/09" com uma variável que é tirado de um usuário rápida.
#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
Solução
Se você quiser ser solicitado (em oposição a passando a data como um parâmetro), use a seguinte lógica (ou algo similar):
date=
while [ -z $date ]
do
echo -n 'Date? '
read date
done
Esse ciclo continuará a prompt para a data até que o usuário digita alguma coisa (qualquer coisa) que não seja um simples retorno.
Se você quiser adicionar alguma validação simples, e você estiver usando uma versão do KSH que é ksh93 ou melhor, fazer algo como isto:
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 a página man ksh93 para mais informações.
Outras dicas
Em geral a partir de um argumentos de linha de comando shell script pode ser acessado como:
$0, $1, ... $N
Assim, você poderá substituir a data codificado como:
./room_xls.pl $1
E executá-lo como
./myscript 1/12/09
$ 1 é o primeiro argumento de linha de comando. Esta vai até US $ 9. Marque esta tutorial para sintaxe mais básica ksh.