Question

C’est un script shell korn brut que quelqu'un a écrit. Je ne sais pas trop comment utiliser la syntaxe du shell et je ne suis même pas sûr que cela soit possible.

Existe-t-il un moyen quelconque d'exécuter ce fichier et de demander la date afin que je n'ai pas à entrer manuellement dans le script et à le modifier à chaque fois?

Par exemple, je souhaite remplacer le "1/12/09" avec une variable extraite d'une invite de l'utilisateur.

#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
Était-ce utile?

La solution

Si vous souhaitez être invité (au lieu de passer la date en tant que paramètre), utilisez la logique suivante (ou quelque chose de similaire):

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

Cette boucle continuera à demander la date jusqu'à ce que l'utilisateur entre autre chose qu'un simple retour.

Si vous souhaitez ajouter une validation simple et que vous utilisez une version de KSH c'est KSH93 ou mieux, faites quelque chose comme ça:

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

Voir la page de manuel de ksh93 pour plus d'informations.

Autres conseils

En général, à partir d'un script shell, les arguments de ligne de commande peuvent être consultés comme suit:

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

Vous pouvez donc remplacer la date codée en dur, par exemple:

./myscript 1/12/09

Et lancez-le comme

<*>

$ 1 est le premier argument de la ligne de commande. Cela monte à 9 $. Consultez ce tutoriel pour en savoir plus sur la syntaxe ksh de base.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top