echoist eine in Bash und dash ( /bin/sh) eingebaute Shell . Wenn Sie echoüber die Befehlszeile ausgeführt werden, verwenden Sie die integrierte Bash-Funktion. Wenn Sie Ihr Shell-Skript mit dieser Funktion ausführen, verwenden Sie shdie integrierte Dash-Funktion.
Die Dash-Version von echokennt die -eOption nicht, gibt jedoch alles wörtlich aus, ohne dass eine spezielle Behandlung für \Sequenzen erforderlich ist .
Verwenden Sie entweder Bash, um Ihr Shell-Skript auszuführen, oder verwenden Sie /bin/echoanstelle von echo:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Um die Probleme mit verschiedenen Versionen zu vermeiden, echomöchten Sie möglicherweise printfstattdessen verwenden. Im Gegensatz zu Sequenzen, die echoprintfimmer interpretiert \werden, wird am Ende jedoch nicht automatisch ein Zeilenvorschub eingefügt, sodass Sie am Ende einen Zeilenvorschub anfügen müssen, \nwenn Sie einen möchten.
Da einige Versionen von printfnicht verstehen \e, sollten Sie \033stattdessen Folgendes verwenden :
Es klappt. /bin/echomit dash ( /bin/sh) und bash; echomit bash oder ./tes.shbeides funktioniert einwandfrei. Der folgende Code funktioniert bashnur mit. if [$ UID -ne 0]; dann echo "Nicht root" else echo "Root - Benutzer" fi
Qingfeng
1
Führen Sie sh test.shes nicht mit aus , es druckt den Text in weißer Farbe, wie Sie sagten. Nachdem Sie das Skript erstellt haben, machen Sie es ausführbar, indem Sie Folgendes ausführen:
sudo chmod +x /path/test.sh
Führen Sie das Skript mit sudo, like sudo ./test.shoder ./test.shboth aus.
Ich laufe chmod a+x test.sh, es druckt den Text in gelesenen Farben. Was ist der Unterschied. ./test.shsollte gleich sh test.shWas ist unter Linux passiert?
Qingfeng
Sie nicht zu verwenden sh haben , während das Skript ausgeführt wird , das Skript mit bash - Interpreter erstellt hat , #! /bin/bashso dass Sie verwenden müssenbash test.sh
Avinash Raj
Und .bedeutet auch aktuelles Verzeichnis.
Avinash Raj
Sehen Sie sich den Screenshot an, meine Datei test.sh befindet sich auf dem Desktop. Also bin ich in diesen Desktop-Ordner gezogen und ./test.shstarte dann , endlich funktioniert es. Denken Sie daran, dass Sie das Skript .nur ausführen, wenn es im aktuellen Verzeichnis vorhanden ist.
Avinash Raj
1
Dazu muss der richtige Befehl im richtigen Format vorliegen.
Richtige Echo-Aussage: echo "Hello World!"
Richtiges Echo Statement mit Farbe: echo "\e[1;31mHello World!\e[0m"
Das Hinzufügen von Farbe zu einem Bash-Skript ist eine dieser sehr einfachen, aber leicht verwirrenden Aufgaben. =)
Diese Seite könnte Ihnen dabei helfen, alles klar zu erklären. Ich benutze es oft als Referenz, denn wer kann sich schon an alle richtigen Farbcodes erinnern, oder? LOL
/bin/echo
mit dash (/bin/sh
) und bash;echo
mit bash oder./tes.sh
beides funktioniert einwandfrei. Der folgende Code funktioniertbash
nur mit. if [$ UID -ne 0]; dann echo "Nicht root" else echo "Root - Benutzer" fiFühren Sie
sh test.sh
es nicht mit aus , es druckt den Text in weißer Farbe, wie Sie sagten. Nachdem Sie das Skript erstellt haben, machen Sie es ausführbar, indem Sie Folgendes ausführen:Führen Sie das Skript mit
sudo
, likesudo ./test.sh
oder./test.sh
both aus.Oder
Führen Sie das Skript mit
bash
,quelle
chmod a+x test.sh
, es druckt den Text in gelesenen Farben. Was ist der Unterschied../test.sh
sollte gleichsh test.sh
Was ist unter Linux passiert?#! /bin/bash
so dass Sie verwenden müssenbash test.sh
.
bedeutet auch aktuelles Verzeichnis../test.sh
starte dann , endlich funktioniert es. Denken Sie daran, dass Sie das Skript.
nur ausführen, wenn es im aktuellen Verzeichnis vorhanden ist.Dazu muss der richtige Befehl im richtigen Format vorliegen.
Richtige Echo-Aussage:
echo "Hello World!"
Richtiges Echo Statement mit Farbe:
echo "\e[1;31mHello World!\e[0m"
Das Hinzufügen von Farbe zu einem Bash-Skript ist eine dieser sehr einfachen, aber leicht verwirrenden Aufgaben. =)
Diese Seite könnte Ihnen dabei helfen, alles klar zu erklären. Ich benutze es oft als Referenz, denn wer kann sich schon an alle richtigen Farbcodes erinnern, oder? LOL
quelle