Bugs dans mon script, need help ! [bash] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 06-03-2008 à 16:13:24
euh, quelle est l'erreur en question ?
y m'parait bien ce code
Marsh Posté le 06-03-2008 à 16:15:37
Hum j'y comprends rien... Donc en fait je code sous Mac OS X avec Smultron. J'enregistre les fichiers en .sh que je copie en suite dans ma VM Ubuntu. En copiant le .sh contenant cette fonction, j'obtiens des erreurs. En copiant le code dans gedit sur Ubuntu, ça marche...
Y'aurait-il un encodage texte précis à respecter ?
Marsh Posté le 06-03-2008 à 16:17:19
Balances tout le code.
Marsh Posté le 06-03-2008 à 16:22:36
Y'a rien de spécial dedans, ça ressemble grosso modo à ça. Le truc que je capte pas c'est pourquoi Smultron me sort des .sh qui buggent et pourquoi gedit lui me donne des .sh qui marchent bien.
Quel encodage choisir pour les .sh ? ASCII ? UTF-8 ? ISO ?
Marsh Posté le 06-03-2008 à 18:04:51
La moindre des choses ça serait quand même de donner l'erreur exacte que tu as, là on comprend rien.
Dans ton script il y a des ; en trop mais ça ne pose pas de problème. Tu es aussi sensé mettre un espace avant le () dans la définition d'une fonction.
Marsh Posté le 06-03-2008 à 20:54:56
Ok je débute en bash à vrai dire. Dans le code que j'enregistre via smultron (qui détecte bien que je scripte en sh) l'erreur donnée correspond à un caractère non attendu au case, par exemple '1' non expected (expecting '(')
En c/c puis réenregistrement sur gedit ça passe...
Concernant les ; en trop, pas besoin d'en mettre à la fin de toutes les lignes (pour l'instant je ne code que du C j'ai peu de comparaison) ?
Merci en tout cas pour ces quelques conseils !
Une dernière petite chose, j'ai pas mal cherché sur la toile mais je n'ai pas trouvé de réponse. Existe-t-il un moyen d'avoir une sortie standard (> ou >> ) en sudo pour éviter d'obliger à lancer le script en étant en root ?
J'en ai besoin pour :
Code :
|
Marsh Posté le 07-03-2008 à 08:29:56
Mais on veut pas ton interprétation des erreurs, on veut le message en clair, écrit ici, nom d'un tux !
Pour les ";", non, ça n'est pas nécessaire d'en mettre à chaque ligne, mais ça ne devrait pas générer d'erreur ...
Marsh Posté le 07-03-2008 à 12:28:40
Non les ; ne génèrent pas d'erreur en effet. Je vais nettoyer tous mes scripts dans ce cas pour que ça fasse + propre
Pour l'erreur j'essaie de la refaire en enregistrant un nouveau script via smultron mais bizaremment j'ai plus de bug... Pourtant ça venait bien de là au départ le problème. Cet aprem je vais continuer donc si jamais je revois l'erreur je poste ça en bon et du forme, promis.
Pas d'idée à propos de la sortie en pseudo sudo pour éviter d'être loggé en root ? L'idée c'est de créer des scripts pour faire un outil d'administration et dans ce cadre là je préfèrerais passer tout avec sudo (je débute dans linux mais il parait qu'il vaut mieux s'habituer à se logger le moins possible en root) si c'est possible bien sur.
Marsh Posté le 07-03-2008 à 12:31:09
mais smultron c'est un éditeur de texte ... j'vois pas le rapport entre l'éditeur que tu utilises et le résultat d'exécution du script ...
Marsh Posté le 07-03-2008 à 12:40:01
Pour la sortie avec sudo je ne vois pas le problème... Tu as deux solutions :
sudo command > out< |
ou :
sudo sh -c 'command > out' |
Dans le premier cas le fichier "out" est créé par ton user puisque c'est la sortie de "sudo" (qui est la sortie de la commande) qui est loggée. Dans le deuxième cas le fichier est créé par root puisque c'est directement la sortie de la commande qui est loggée (et sudo ne voit pas de sortie).
Pour stderr c'est pareil avec 2> au lieu de >.
Marsh Posté le 07-03-2008 à 16:46:38
wedgeant a écrit : mais smultron c'est un éditeur de texte ... j'vois pas le rapport entre l'éditeur que tu utilises et le résultat d'exécution du script ... |
Pareil, je cherche à comprendre pourquoi le même script enregistré avec smultron et gedit donnait pour le premier une erreur et pas pour le second. Le souci étant que le bug ne se produit plus...
Concernant la sortie ça ne marche pas, voici le bout de code :
Code :
|
J'ai essayé avec : sudo echo "server $newntp" >> /etc/ntp.conf
mais même résultat quand j'édite le fichier ntp.conf aucune ligne ne s'ajoute. En étant loggé en root en revanche ça marche impeccable.
Marsh Posté le 07-03-2008 à 17:10:16
Norrmal, toutes les taches que tu demandes sont des taches d'admin'.
Crées ton script, vires les "sudo" qui traines, lances en root.
Tu devrais plus avoir de problèmes.
Marsh Posté le 07-03-2008 à 20:55:10
Pourtant chez moi ça marche :
$ sudo sh -c 'echo "# toto" >> /etc/ntp.conf' |
Tu es sûr que sudo est configuré correctement ? Ton user est dans le groupe wheel ?
Marsh Posté le 06-03-2008 à 16:09:51
Dans le cadre d'un TP en classe je dois faire une partie avec un petit script pour faire quelques petites choses (affichage, réglage et synchronisation NTP de l'heure)
J'ai un bug dans mon code que j'arrive pas à identifier, au niveau du menu.
Voici la fonction en question :
L'erreur intervient à la ligne de "displayDate" selon le shell Linux (Ubuntu) et "configDateHour" selon celui de Mac OS X.
Lequel dois-je taper ?