Vous n'êtes pas identifié(e).
Pages : 1
Hors ligne
Bonjour,
J’ai créé dans un programme « toto » une fonction nommée « couleur » qui me permet de colorer mes affichages.
bonjour
le programme toto est en bash, python, c++, ... ??
colorer tes affichages ? de console, d'affiche, de fenêtres, de bureau ...?
bref si tu en disais un peu plus, si tu nous montrais le script toto, ça sera peut être plus facil pour ceux qui ont des notions de programmation
Dernière modification par Severian (04-09-2017 10:14:37)
Hors ligne
Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH
Hors ligne
l'ensemble des commandes du fichier toto est évalué dans un
nouveau shell. Ce shell prend fin quand il a exécuté l'ensemble des
commandes dans le fichier toto. Et donc la fonction
couleur n'est pas définie dans le shell courant.
permet de « sourcer » le fichier toto dans lequel
tu as définit ta fonction couleur.
Ce qu'il faut c'est évalué le script (toto) dans le shell courant avec :
Ou en bash :
Hors ligne
Hors ligne
n'ait rien donné, à moins que les deux scripts ne soient pas dans le même dossier. Essaye avec des chemins absolus pour voir.
Dernière modification par Lancelot du Lac (05-09-2017 19:46:35)
Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH
Hors ligne
toto
Pour donner plus d'explications :
- le exit à la fin de COULEUR provoquait forcément... l'arrêt du script !
- j'ai changé le nom de la couleur, parce que cela correspond à du bleu, non à du rouge. Regarde cette page : https://www.admin-linux.fr/bash-de-la-c … -le-shell/
- il faut ajouter le paramètre -e pour que echo interprète les anti-slash
- source est le seul moyen d'obtenir les fonctions et paramètres de COULEUR (autant que je sache, du moins)
- j'ai rajouté un 0 après exit pour indiquer au shell que tout s'est bien passé (mais ce n'est pas obligatoire)
Voilà, voilà. J'espère que ça t'aura aidé.
Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH
Hors ligne
- il faut ajouter le paramètre -e pour que echo interprète les anti-slash
On peut aussi utiliser printf (à la place de « echo -e ») qui interprète les séquences
d'échappement quoi qu'il en soit. Il faut l'utiliser de cette façon :
Hors ligne
Hors ligne
et que donne :
?
'.' est un synonyme de 'source'.
Dernière modification par Lancelot du Lac (08-09-2017 16:52:29)
Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH
Hors ligne
Il est normal que cecho ne soit pas trouvé, si source ne fonctionne pas. J'ai l'impression que c'est la fonction source elle-même qui ne marche pas, ce qui est... bizarre. Peux-tu essayer de faire ceci dans la ligne de commande :
source COULEUR
et que donne :. COULEUR?
'.' est un synonyme de 'source'.
Il ne se passe rien mon cher Lancelot...
Hors ligne
tu dois avoir accès à la fonction cecho. Peux-tu tester cela en ligne de commandes ?
Autre question : aurais-tu la possibilité de tester tes scripts sur une autre machine ? Sur une machine virtuelle par exemple ? Parce que j'ai du mal à comprendre pourquoi ça ne fonctionne pas vu que chez moi, ça fonctionne très bien.
Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH
Hors ligne
#!/bin/bash
source COULEUR
cecho "Bonjour" $bleu
exit 0
Idem sur VM Lancelot,
source: not found
cecho: not found
Tu as dû omettre un paramètre quelconque ...
Hors ligne
Idem sur VM Lancelot,
source: not found
cecho: not found
Tu as dû omettre un paramètre quelconque ...
Chez moi, ça marche comme dit Lancelot. En plus, que cecho ne soit pas trouvé, soit.
Mais source est une commande interne de bash. Donc à moins que tu n'utilises pas
bash je ne vois pas bien comment ça se pourrait.
En sh il faut utiliser la commande interne « . » à la place de source de cette façon :
D'ailleurs si cecho n'est pas trouvé, c'est parce que source ne fonctionne pas.
EDIT: J'en profite pour donner une petite astuce pratique pour débugger les shells scripts.
En tout début de script mettre :
Ça permet de mieux voir ce qui se passe.
Dernière modification par enicar (09-09-2017 08:04:18)
Hors ligne
Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH
Hors ligne
Il faudrait quelqu'un de plus compétent que moi pour comprendre pourquoi une fonction interne ne fonctionne pas.
Il y a plusieurs possibilités. La plus simple c'est que philou n'utilise pas bash mais sh qui est
lien symbolique vers dash. Une plus tordue serait que source a été désactivé par
Mais je doute fort que ce soit le cas. Allez, je parie pour la première hypothèse
Hors ligne
Lancelot du Lac a écrit :Il faudrait quelqu'un de plus compétent que moi pour comprendre pourquoi une fonction interne ne fonctionne pas.
Il y a plusieurs possibilités. La plus simple c'est que philou n'utilise pas bash mais sh qui est
lien symbolique vers dash. Une plus tordue serait que source a été désactivé par
enable -n source
Mais je doute fort que ce soit le cas. Allez, je parie pour la première hypothèse
Merci Enicar, effectivement en tapant bash toto au lieu de sh toto, tout fonctionne. Mais j'aimerais bien connaître les conséquences de chacune de ces deux commandes pour lancer un programme ??
Hors ligne
Merci Enicar, effectivement en tapant bash toto au lieu de sh toto, tout fonctionne. Mais j'aimerais bien connaître les conséquences de chacune de ces deux commandes pour lancer un programme ??
Quelles commandes ? Ta question est un peu trop vague…
Hors ligne
Il en existe pleins d'autres.
Hors ligne
Dell Inspiron 7500 series - Debian Stretch - KDE/openbox - ZSH
Samsung - Debian Jessie - LXDE/pas de graphique - ZSH
Hors ligne
Hors ligne
Pages : 1