# \[RESOLU\] Concept de base ... bash scripts

**URL:** <https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464>\
**Category:** Programmation\
**Created:** [Octobre 25, 2016, 12:53 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464 "2016-10-25T00:53:17Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 25, 2016, 12:53 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/1 "2016-10-25T00:53:17Z")

</div>

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](http://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

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Octobre 25, 2016, 6:28 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/2 "2016-10-25T06:28:53Z")

</div>

> [@rasdehya](#):
>
> echo -e $Red"ATTENTION"

`echo -e "$RedATTENTION"`

* * *

Mis à part, qu’il existe quand même depuis des années un outil nommé ‹&nbsp;tput&nbsp;› 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)"

```

😉

---

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 25, 2016, 2:55 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/3 "2016-10-25T14:55:49Z")

</div>

meric pour «&nbsp;tput&nbsp;» 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 «&nbsp;$Red ATTENTION DANGER&nbsp;»

??[quote=«&nbsp;PengouinPdt, post:2, topic:71464&nbsp;»]  
echo -e «&nbsp;$RedATTENTION&nbsp;»  
[/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

---

<div class="post-metadata">

**Author:** ![greenmerlin](https://www.debian-fr.org/user_avatar/www.debian-fr.org/greenmerlin/32/5007_2.png) [@greenmerlin](https://www.debian-fr.org/u/greenmerlin)\
**Post date:** [Octobre 25, 2016, 3:17 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/4 "2016-10-25T15:17:23Z")

</div>

Bonjour,

Peut-tu poster ton script en entier ?

@+

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Octobre 25, 2016, 4:21 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/5 "2016-10-25T16:21:55Z")

</div>

> [@rasdehya](#):
>
> echo -e «&nbsp;$RedATTENTION&nbsp;»
> 
> t’as du oublier un espace) —\> uniquement DANGER en vert

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

`echo -e "${Red}ATTENTION DANGER"`

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Octobre 25, 2016, 6:49 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/6 "2016-10-25T18:49:34Z")

</div>

**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.

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

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

```

---

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 25, 2016, 8:23 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/7 "2016-10-25T20:23:15Z")

</div>

`Install.sh`

```auto
#/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`

```auto
#/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

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

```

---

<div class="post-metadata">

**Author:** ![greenmerlin](https://www.debian-fr.org/user_avatar/www.debian-fr.org/greenmerlin/32/5007_2.png) [@greenmerlin](https://www.debian-fr.org/u/greenmerlin)\
**Post date:** [Octobre 25, 2016, 8:32 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/8 "2016-10-25T20:32:58Z")

</div>

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/](http://wiki.bash-hackers.org/)

---

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 25, 2016, 8:35 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/9 "2016-10-25T20:35:19Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 25, 2016, 8:53 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/10 "2016-10-25T20:53:43Z")

</div>

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](http://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

---

<div class="post-metadata">

**Author:** ![greenmerlin](https://www.debian-fr.org/user_avatar/www.debian-fr.org/greenmerlin/32/5007_2.png) [@greenmerlin](https://www.debian-fr.org/u/greenmerlin)\
**Post date:** [Octobre 26, 2016, 5:18 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/12 "2016-10-26T05:18:03Z")

</div>

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

[LOL](https://postimg.org/image/tokp3ic8h/)

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 @+

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Octobre 26, 2016, 5:20 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/13 "2016-10-26T05:20:00Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 26, 2016, 9:17 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/14 "2016-10-26T21:17:26Z")

</div>

ca y est je m 'en suis sorti

```auto
#!/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 ?

> [@greenmerlin](#):
>
> c’est une convention du noyau, pas du shell.

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

---

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 29, 2016, 1:03 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/15 "2016-10-29T01:03:45Z")

</div>

```auto
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](http://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](http://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 😉 mais je lacherai pas le mord !!!  
a plus

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Octobre 29, 2016, 7:27 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/16 "2016-10-29T07:27:00Z")

</div>

> [@rasdehya](#):
>
> le ‹&nbsp;-e&nbsp;› n est pas interpreter comme option par bash

Normalement si …

---

<div class="post-metadata">

**Author:** ![rasdehya](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/f1d935/32.png) [@rasdehya](https://www.debian-fr.org/u/rasdehya)\
**Post date:** [Octobre 29, 2016, 10:24 UTC](https://www.debian-fr.org/t/resolu-concept-de-base-bash-scripts/71464/17 "2016-10-29T22:24:35Z")

</div>

`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](http://ubuntu.fr)  
c etait aussi con que ca… RESOLU
