web-dev-qa-db-fra.com

La commande Echo avec l'option de couleur dans le script et la commande fonctionne différemment

Si je lance echo -e "\e[1;31mThis is red text\e[0m" dans la ligne de commande, cela affichera du texte rouge.

Cependant, si j'utilise l'écrire dans le fichier script test.sh

#! /bin/bash
echo -e "\e[1;31mThis is red text\e[0m"

lancer $ sh test.sh

Il imprime -e \e[1;31mThis is red text\e[0m

Pourquoi ils agissent différemment?

14
qingfeng

echoest un shell intégré dans Bash et Dash (/bin/sh). Si vous exécutez echoà partir de la ligne de commande, vous utilisez la commande intégrée Bash, si vous exécutez votre script Shell avec shname__, vous utilisez la commande intégrée Dash.

La version avec tiret de echone connaît pas l’option -e mais ne fait que générer quoi que ce soit verbatim sans traitement spécial pour les séquences \.

Utilisez Bash pour exécuter votre script Shell ou utilisez /bin/echo au lieu de echoname__:

/bin/echo -e "\e[1;31mThis is red text\e[0m"

Pour éviter les problèmes avec les différentes versions de echoname__, vous pouvez utiliser plutôt printfname__. Contrairement à echoprintfinterprète toujours les séquences \ mais n'ajoute pas automatiquement de saut de ligne à la fin, vous devez donc ajouter \n à la fin si vous en voulez un.

Certaines versions de printfne comprenant pas \e, vous devez utiliser \033 à la place:

printf "\033[1;31mThis is red text\033[0m\n"
27
Florian Diesch

Ne le lancez pas avec sh test.sh, il affiche le texte en blanc, comme vous l'avez dit. Après la création du script, rendez-le exécutable en exécutant,

Sudo chmod +x /path/test.sh

enter image description here

Exécutez le script avec Sudo, comme Sudo ./test.sh ou ./test.sh, les deux fonctionneront.

Ou

Exécutez le script avec bash,

bash /path/test.sh
1
Avinash Raj

Cela nécessite la commande correcte dans le format correct est tout.

Déclaration echo correcte: echo "Hello World!"

Déclaration echo correcte avec la couleur: echo "\e[1;31mHello World!\e[0m"

Ajouter de la couleur à un script bash est l’une de ces choses très simples mais qui prêtent à confusion. =)

Ce site pourrait vous aider à tout expliquer clairement. Je l'utilise souvent comme référence car, qui peut se souvenir de tous les codes de couleur corrects, n'est-ce pas? LOL

0
hwac121