[RESOLU] Concept de base ... bash scripts

Salut
J ai dans mon bash_aliases mes codes couleur… ca marche tres bien dans le terminal

echo -e $Red"ATTENTION"

ATTENTION est bien en rouge ( Red=’\e[0;31m’)
par contre dans mon script foo.sh je declare $Red
Red=’\e[0;31m’
echo -e $Red"ATTENTION"
et dans un terminal ca me renvoie
-e \e[0;31m]"ATTENTION"
Je dois passer a cote d’un concept important…
pourquoi ca marche dans un sens et pas dans l autre ?
un peu de lumiere svp
merci

echo -e "$RedATTENTION"


Mis à part, qu’il existe quand même depuis des années un outil nommé ‘tput’ qui a justement pour propos de modifier les caractèristiques du terminal, ainsi pour les couleurs, c’est :

BLACK="$(tput setaf 0)" 
RED="$(tput setaf 1)" 
GREEN="$(tput setaf 2)" 
YELLOW="$(tput setaf 3)" 
LIME_YELLOW="$(tput setaf 190)" 
POWDER_BLUE="$(tput setaf 153)" 
BLUE="$(tput setaf 4)" 
MAGENTA="$(tput setaf 5)" 
CYAN="$(tput setaf 6)" 
WHITE="$(tput setaf 7)" 
BRIGHT="$(tput bold)" 
NORMAL="$(tput sgr0)" 
BLINK="$(tput blink)" 
REVERSE="$(tput smso)" 
UNDERLINE="$(tput smul)"

:wink:

1 J'aime

meric pour “tput” ca me rajoute les fonction blink reverse et underline … OK c cool
Mais ca ne repond pas trop a mon problème puisque mes variables marchent très bien.
Lorsque mon terminal s ouvre j ai un message en couleur ( qui utilise $BRed"" $BYel"" et $BGre)

echo -e $Red"ATTENTION DANGER"
ou -------------------------------------------------------> ATTENTION DANGER en rouge tout va bien
echo -e “$Red ATTENTION DANGER”

??[quote=“PengouinPdt, post:2, topic:71464”]
echo -e “$RedATTENTION”
[/quote]

t’as du oublier un espace) —> uniquement DANGER en vert
Mais c’est logique je pense, il ne connait pas la variable RedATTENTION …

Mon problème c est que lorsque j ecris la meme chose dans un script , lors de son exécution ca me renvoie

-e \e[0;31m ATTENTION DANGER ----> tout ca en vert bien sur

J aimerai surtout comprendre ce qu il cloche… la couleur c facultatif
Alors…quel concept me bloque ??
Quelle différence entre l exécution direct dans le terminal et celle depuis un script

Bonjour,

Peut-tu poster ton script en entier ?

@+

Ooops, pardon, les recommandations shell étant de quoter, bien sûr !

echo -e "${Red}ATTENTION DANGER"

Juste une petite note hors sujet :

Quand tu change les attributs des caractères à afficher,
n’oublie pas, après, de remettre le mode d’affichage en mode normal.

Red='\e[0;31m'
Raz='\e[0;0m'

echo -e "${Red}ATTENTION EN ROUGE${Raz} Le texte qui suit sera affiché normalement"
1 J'aime

Install.sh

#/bin/bash
. ./creer_media.sh
. ./creer_persistance.sh
. ./creer_menu.sh
. ./copier_iso.sh
Red='\e[0;31m'

copier_iso
creer_media
creer_persistance
creer_menu

et le script concerné creer_media.sh

#/bin/bash
creer_media() {
echo "EASY2BOOT ... "
sleep 1
cd /iso/_ISO/docs/linux_utils
sudo chmod 777 *
echo "1) FormateR le media avec gparted en fat32"
echo "2) Creer une petite partition (invisible) a la fin du disque pour une meilleur compatibilitée "
echo "gparted demarre..."
sudo gparted &
sleep 1
read -p "3) Lorsque le disque est pret appuyer sur ENTER  pour continuer ou Ctrl-C pour annuler " a
echo "cette operation formate le disque selectionne"
echo -e "$Red ATTENTION CHOISI LA LETTRE AVEC PRUDENCE, tu pourrais effacer ton systeme"
sleep 10
sudo ./fmt.sh 
}

Ok pour le quotage… j essayerai d’appliquer… merci
Exacte pour le reset ca donerais qqchose de plus joli

echo -e "${Red}ATTENTION CHOISI LA LETTRE AVEC PRUDENCE {Rcol}tu pourrais effacer ton systeme"

la réponse est simple ton script bash doit commencer par

#!/bin/bash
et pas #/bin/bash

je te conseille la lecture de se site http://wiki.bash-hackers.org/

oups pardon
pourtant il tourne ???
enfin tournait…
depuis que j ai mis #!/bin/bash en plus comme par hazard…
c est mon premier scripts… avec creation de fonctions… et je galere pas mal j avoue…
+1 pour wiki.bash-hackers

en fait c est juste le script creer_menu.sh … qd je le lance un termial s ouvre et ferme aussitot
Sinon qd je lance INSTALL.sh tout marche nickel… jusqu’au retour
-e \e[0;31m]ATTENTION…

et je me repete la ligne de code
echo -e "$Red ATTENTION CHOISI LA LETTRE AVEC PRUDENCE, tu pourrais effacer ton systeme"
marche dans mon terminal

Désolé suis obligé de te répondre de cette manière

LOL

En gros le shebang(!#) n’est pas une convention du shell, il est interprété par le noyau lors de la manipulation d’un syscall; c’est une convention du noyau, pas du shell.

voila @+

@greenmerlin

Je viens de replacer ton message dans ce fil.
Désolé : Je suis long à la détente, et j’avais pas compris le rapport avec le lien que tu cite.

1 J'aime

ca y est je m 'en suis sorti

#!/bin/bash
. ./creer_media
. ./creer_persistance
. ./creer_menu
. ./copier_iso
. $HOME/.colorier

en sourcant le fichier .colorier ca a marché … enfin.
si qqn voie pourquoi ?

n’empeche j aurais appris pas mal de truc avec une probleme à la con.
merci a vous , a+

echo -e $Red "ATTENTION"
echo -e "${Red} [!]"
echo -e "\e[0;31m ATTENTION"

ces commande dans le terminal renvoie la couleur
Mais a travers un script ca plante

02:53 ryms@debian:~/Téléchargements/applications/my_easy2boot$
sh INSTALL.sh
EASY2BOOT …

  1. FormateR le media avec gparted en fat32
  2. Creer une petite partition (invisible) a la fin du disque pour une meilleur compatibilitée
    gparted demarre…
  3. Lorsque le disque est pret appuyer sur ENTER pour continuer ou Ctrl-C pour annuler cette operation formate le disque selectionne
    -e \e[0;31m [!]
    -e \e[0;31m ATTENTION
    -e \e[0;31m ATTENTION CHOISI LA LETTRE AVEC PRUDENCE,\e[0m tu pourrais effacer ton systeme
    Voullez vous ajouter vos ISO maintenant ? o/ne

c toujours le meme INSTALL.sh et creer_media avec ses meme 3 lignes dedans

Je comprend plus rien… le ‘-e’ n est pas interpreter comme option par bash ?? c ca ?
j ai beau lire les pages de man ou autre forum j ai l impressionn de passe a coter de qqchose asser gros qd meme… pas facile le terminal qd meme… c etait pareil avec la fonction exec j ai galerer grave :wink: mais je lacherai pas le mord !!!
a plus

Normalement si …

et si tu lances la commande :bash INSTALL.sh au lieu desh INSTALL.sh?Bash est différent de sh. Tes scripts sont bash mais tu les exécutes en sh.
merci a Hizoka d ubuntu.fr
c etait aussi con que ca… RESOLU