Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Archive de la liste aide - [Aide] problème avec une fonction dans un script bash
> Règle de Dépannage : Si le programme échoue, il faut le faire
> bruyamment et le plus tôt possible.

Oui, mais dans le cas d'un script qui sans doute va tourner via un cron
et sans intervention de l'administrateur, le script doit rendre la main
de toute façon et ne pas attendre une interaction  de l'utilisateur.
La bonne manière de faire ici je pense c'est:
rm ${CSV_FILE} 2>/dev/null
[ $? -ne 0 ] && mutt -s "Script error" -- admin @ moi.fr <<< "Message
d'erreur"

> en revanche, pou blinder le programme, il est possible, avant un rm :
> - de vérifier que le fichier existe
> - de vérifier si on a le droit [w] sur ce fichier
> et de gérer tous les cas proprement explicitement
C'est pourquoi j'ai indiqué que l'emploi de mktemp serait préférable.
Mais oui, un 
[ -e ${CSV_FILE} ] && rm ${CSV_FILE} 2>/dev/null #etc
aurait été plus avenant.

En fait, il faudrait tenir un fichier de log et en cas d'erreur
enregistrer un message d'erreur dans ce fichier de log.

> 2.
C'est une convention qui n'est pas vraiment mise en avant dans le
"Advanced Bash-Scripting Guide" http://tldp.org/LDP/abs/html/
La convention qui me semble en usage ici, c'est que les constantes
définies en début de script sont en MAJUSCULES, tandis que les
variables du programme sont elles en minuscules.
Il suffit d'ailleurs d'aller jeter un oeil aux différents scripts
système pour se rendre compte que c'est une pratique/convention très
largement répandue.

> 3. fonctions
Oui, les variables sont locales au script à moins d'utiliser
explicitement export.
Ainsi, si j'utilise une variable MAIL dans mon script, cela n'écrasera
pas ma variable d'environnement MAIL pour le reste de mon système. Cela
revient à définir une variable propre à mon script (qui devra se
passer de la variable d'environnement MAIL), ce qui ne pose pas de
problème sur un script aussi simple et qui n'a pas vocation à être
redistribué. L'utilisation d'un préfixe, comme myMAIL, myCSV_FILE, peut
éliminer la source de confusion.

Bon, maintenant, j'ai fait ça rapidement pour donner un coup de main,
si ce n'est pas souhaité, ben... je m'abstiendrais :)

Ille





Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons