echoest un shell intégré à Bash et dash ( /bin/sh). Si vous exécutez à echopartir de la ligne de commande, vous utilisez la fonction intégrée Bash, si vous exécutez votre script shell avec shvous, vous utilisez la fonction intégrée Dash.
La version de tiret de echone connaît pas l' -eoption, mais affiche simplement quoi que ce soit textuellement sans aucune manipulation spéciale pour les \séquences.
Soit utiliser Bash pour exécuter votre script shell, soit utiliser à la /bin/echoplace de echo:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Pour éviter les problèmes avec différentes versions de echovous pouvez utiliser à la printfplace. Contrairement à echoprintfinterprète toujours les \séquences mais n'ajoute pas automatiquement un saut de ligne à la fin, vous devez donc ajouter \nà la fin si vous le souhaitez.
Comme certaines versions de printfne comprennent pas, \evous devez utiliser à la \033place:
Ça marche. /bin/echoavec tiret ( /bin/sh) et bash; echoavec bash ou les ./tes.shdeux fonctionne correctement. Le code ci-dessous fonctionne bashuniquement avec . if [$ UID -ne 0]; puis écho "Pas utilisateur root" sinon écho "Utilisateur root" fi
qingfeng
1
Ne l'exécutez pas avec sh test.sh, il imprime le texte en blanc comme vous l'avez dit .. Après avoir créé le script, rendez-le exécutable en exécutant,
sudo chmod +x /path/test.sh
Exécutez le script avec sudo, comme sudo ./test.shou les ./test.shdeux fonctionnent.
Je cours chmod a+x test.sh, il imprime le texte en couleur lue. Quelle est la différence. ./test.shdevrait être égal à sh test.shce qui s'est passé sous Linux?
qingfeng
vous n'avez pas eu à utiliser sh lors de l'exécution du script, vous avez créé le script avec l'interpréteur bash #! /bin/bash, vous devez donc utiliserbash test.sh
Avinash Raj
Et .signifie également le répertoire courant.
Avinash Raj
Voir la capture d'écran, mon fichier test.sh est placé à l'intérieur du bureau.J'ai donc déménagé dans ce dossier de bureau, puis je lance ./test.sh, enfin cela fonctionne.Veuillez garder à l'esprit d'exécuter le script .uniquement s'il a été présenté dans le répertoire actuel.
Avinash Raj
1
Cela nécessite la commande correcte dans le format correct est tout.
Déclaration d'écho appropriée avec 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 facilement déroutantes. =)
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? LOL
/bin/echo
avec tiret (/bin/sh
) et bash;echo
avec bash ou les./tes.sh
deux fonctionne correctement. Le code ci-dessous fonctionnebash
uniquement avec . if [$ UID -ne 0]; puis écho "Pas utilisateur root" sinon écho "Utilisateur root" fiNe l'exécutez pas avec
sh test.sh
, il imprime le texte en blanc comme vous l'avez dit .. Après avoir créé le script, rendez-le exécutable en exécutant,Exécutez le script avec
sudo
, commesudo ./test.sh
ou les./test.sh
deux fonctionnent.Ou
Exécutez le script avec
bash
,la source
chmod a+x test.sh
, il imprime le texte en couleur lue. Quelle est la différence../test.sh
devrait être égal àsh test.sh
ce qui s'est passé sous Linux?#! /bin/bash
, vous devez donc utiliserbash test.sh
.
signifie également le répertoire courant../test.sh
, enfin cela fonctionne.Veuillez garder à l'esprit d'exécuter le script.
uniquement s'il a été présenté dans le répertoire actuel.Cela nécessite la commande correcte dans le format correct est tout.
Déclaration d'écho appropriée:
echo "Hello World!"
Déclaration d'écho appropriée avec 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 facilement déroutantes. =)
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? LOL
la source