si le code c'est ca , je ne comprend pas a quel moment
rentre en jeux le deuxieme parametre
Version imprimable
si le code c'est ca , je ne comprend pas a quel moment
rentre en jeux le deuxieme parametre
ce n'est pas "INFO", ou "ERREUR", qui doit être affiché d'une couleur ou d'une autre, c'est le deuxième argument !
et, il faut des espaces autour du signe égal du test, sinon le shell ne lit qu'unseulargument,
et, il faut des guillemets autour des variables, sinon le shell pourrait lire plusieurs arguments au lieu "d'un seul",
et, ça va finir par rouler ;)
je pense avoir compris contrairement
a ce que j ai ecris sur le code précedent,
je dois remplacer $1 par $2 dans l'action echo -e .
ainsi le parametre 1 determine la couleurs du parametre 2 qui est renvoyer dans le shell
ca y est j ai compris :P:P
merci merci merci pour ta comprehension et ta patience N_BaH
je suis novice et il me faut du temps pour comprendre les choses mais je lache rien
surtout grace a ton aide
j'ai tester et normalement c'est resolu si tout vas bienCode:
1
2
3
4
5
6
7 if [ $1 = "info" ] then echo -e "\033[32m$2\033[0m" elif [ $1 = "erreur" ] then echo -e "\033[31m$2\033[0m" fi
merci a disedorgue également
il faut prendre l'habitude de mettre les variables, dans les tests aussi, entre guillemets : test "$var" = "chaine".
personnellement, j'aurais utilisé printf :EDIT : on peut réduire :Code:
1
2
3
4
5
6
7
8
9
10 laFonction () { local fmt vert=32 rouge=31; if test "$1" = "INFO"; then fmt="$vert"; elif test "$1" = "ERREUR"; then fmt="$rouge"; fi; printf "\e[${fmt}m%s\e[0m\n" "$2" }
Code:
1
2
3
4
5 laFonction () { local INFO=32 ERREUR=31; printf "\e[${!1}m%s\e[0m\n" "$2" # avec une *indirection* }
Code:
1
2
3
4 $ laFonction ERREUR "bla bla" bla bla $ laFonction naouac "bla bla" bla bla