Condition avec commande systeme - Shell/Batch - Programmation
Marsh Posté le 04-04-2009 à 18:02:01
hppp a écrit : Mais le problème c'est comment mettre en variable car j'ai déjà des " dans ma commande. Merci de votre aide |
Tu veux dire "comment mettre des guillemets dans une variable" ? Utiliser les caractères spéciaux
Code :
|
Mais comme les commandes elle-mêmes acceptent aussi les différentes syntaxes, tu n'es pas obligé d'utiliser les guillemets dans tes commandes grep et cut ce qui te permet d'utiliser les guillemets pour ta variable
Code :
|
hppp a écrit :
|
Gros problème dans ce code
1) tu confonds "status" et "affichage". Le status (état) c'est le code de retour d'une commande. Il correspond à une valeur numérique conventionnellement mise à 0 pour indiquer que tout s'est bien passé et pas 0 s'il y a eu un problème. Et il se récupère dans la variable $?
Exemple
Code :
|
Ici, visiblement, ta commande upsc affichera "OB" et c'est cet affichage que tu veux récupérer. Dans ce cas, il faut utiliser les backquottes pour demander a récupérer l'affichage. Et là encore plus besoin de guillemets ce qui te permet de les utiliser dans tes commandes grep et cut
Code :
|
2) le shell est très light comme interpréteur (pour préserver un peu de rapidité) => conséquence => c'est à toi d'écrire bien distinctement les choses. Et si t'écris "[$STATUS_ONDULEUR=OB]", le shell ne saura pas que tu veux comparer des éléments. Faut mettre des espaces pour séparer les éléments. Et des guillemets pour éviter que l'expression soit bancale si la variable est vide
Code :
|
3) if ... then ... fi else then ... fi => difficilement compréhensible par moi. Comment veux-tu que le shell comprenne ce que tu veux ?
Code :
|
Marsh Posté le 05-04-2009 à 10:50:14
ok merci beaucoup d'avoir pris du temps.
Mais je ne comprend pas pourquoi je ne peut pas utiliser STATUS_ONDULEUR comme variable? c'est à cause des majuscules?
Marsh Posté le 05-04-2009 à 13:54:35
hppp a écrit : Mais je ne comprend pas pourquoi je ne peut pas utiliser STATUS_ONDULEUR comme variable? c'est à cause des majuscules? |
Arf non, t'as pas compris. Tu peux nommer ta variable comme t'en as envie, que ce soit "STATUS_ONDULEUR" ou "trouloulou".
Mais généralement on donne aux variables des noms en rapport avec l'info qu'elles contiennent. Ta variable ne récupère pas le status (le code retour) du programme appelé, elle récupère un résultat affiché par ledit programme. C'est donc (à mon sens) plus élégant de la nommer "result".
Concernant l'emploi des majuscules effectivement on préfère les réserver aux variables systèmes "HOME", "PATH", "LOGNAME".
Mon habitude qui n'engage que moi est généralement de mettre les variables en 2 ou 3 mots séparés par un "_". Exemple nb_lig_fic => cette variable récupèrera très probablement le nombre de lignes de mon fichier et d'autres la nommeront plutôt "nbLigFic"...
Marsh Posté le 05-04-2009 à 15:50:17
OK, mais en faite cette commande récupère bien le statu de mon onduleur pour savoir si il y a du courant ou pas.
Merci beaucoup
Marsh Posté le 04-04-2009 à 13:52:10
salut
Je voudrais me faire un script et vérifier l'état de mon onduleur.
Pour ça j'ai déjà fait ça:
Mais le problème c'est comment mettre en variable car j'ai déjà des " dans ma commande. Merci de votre aide