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
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top