echojest powłoką wbudowaną w Bash i dash ( /bin/sh). Jeśli uruchamiasz echoz wiersza poleceń, używasz wbudowanego Bash, jeśli uruchamiasz skrypt powłoki przy shużyciu wbudowanego Dash.
Wersja Dash echonie zna tej -eopcji, ale po prostu wypisuje wszystko dosłownie, bez specjalnej obsługi \sekwencji.
Użyj Bash, aby uruchomić skrypt powłoki lub użyj /bin/echozamiast echo:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Aby uniknąć problemów z różnymi wersjami, echomożesz użyć printfzamiast tego. W przeciwieństwie do echoprintfzawsze interpretuje \sekwencje, ale nie dodaje automatycznie linii na końcu, więc musisz dołączyć \nna końcu, jeśli chcesz.
Ponieważ niektóre wersje printfnie rozumieją \e, powinieneś użyć \033zamiast tego:
To działa. /bin/echoz dash ( /bin/sh) i bash; echoz bash lub ./tes.shoba działają poprawnie. Poniższy kod działa bashtylko z . jeśli [$ UID -ne 0]; następnie echo „Nie root użytkownik” inaczej echo „Użytkownik root” fi
qingfeng
1
Nie uruchamiaj go sh test.sh, drukuje tekst w kolorze białym, jak powiedziałeś. Po utworzeniu skryptu, uruchom go,
sudo chmod +x /path/test.sh
Uruchom skrypt z sudo, jak sudo ./test.shlub ./test.shoba będą działać.
Uruchamiam chmod a+x test.sh, drukuje tekst w kolorze do odczytu. Jaka jest różnica. ./test.shpowinno być równe sh test.shCo się stało w systemie Linux?
qingfeng
nie musiałeś używać sh podczas uruchamiania skryptu, utworzyłeś skrypt za pomocą interpretera bash, #! /bin/bashwięc musisz użyćbash test.sh
Avinash Raj
A także .oznacza bieżący katalog.
Avinash Raj
Zobacz zrzut ekranu, mój plik test.sh jest umieszczony wewnątrz pulpitu, więc przeniosłem się do tego folderu na pulpicie, a następnie uruchamiam ./test.sh, w końcu działa. Pamiętaj, aby uruchomić skrypt .tylko wtedy, gdy był prezentowany w bieżącym katalogu.
Avinash Raj
1
To wszystko wymaga poprawnego polecenia w poprawnym formacie.
/bin/echo
z dash (/bin/sh
) i bash;echo
z bash lub./tes.sh
oba działają poprawnie. Poniższy kod działabash
tylko z . jeśli [$ UID -ne 0]; następnie echo „Nie root użytkownik” inaczej echo „Użytkownik root” fiNie uruchamiaj go
sh test.sh
, drukuje tekst w kolorze białym, jak powiedziałeś. Po utworzeniu skryptu, uruchom go,Uruchom skrypt z
sudo
, jaksudo ./test.sh
lub./test.sh
oba będą działać.Lub
Uruchom skrypt za pomocą
bash
,źródło
chmod a+x test.sh
, drukuje tekst w kolorze do odczytu. Jaka jest różnica../test.sh
powinno być równesh test.sh
Co się stało w systemie Linux?#! /bin/bash
więc musisz użyćbash test.sh
.
oznacza bieżący katalog../test.sh
, w końcu działa. Pamiętaj, aby uruchomić skrypt.
tylko wtedy, gdy był prezentowany w bieżącym katalogu.To wszystko wymaga poprawnego polecenia w poprawnym formacie.
Prawidłowa instrukcja echa:
echo "Hello World!"
Prawidłowa instrukcja echa kolorem:
echo "\e[1;31mHello World!\e[0m"
Dodanie koloru do skryptu bash jest jedną z tych bardzo prostych, ale łatwo mylących rzeczy. =)
Ta strona może pomóc ci to wszystko wyjaśnić. Często używam tego jako odniesienia, bo kto dobrze pamięta wszystkie prawidłowe kody kolorów? lol
źródło