I zrzucić łańcuch ze hexdump
tak 2031 3334 2e30 0a32 2032 3331 302e 000a
. Oczywiste jest, że 0x0a
jest to nowy znak linii, jednak gdy próbuję powtórzyć ten ciąg znaków, zawsze mam 1 430.2 2 13.0
- nowa linia jest zastępowana spacją, nawet używam -e
flagi.
Co może być problemem? Czy tailing \0
rujnuje produkcję? Czy są jakieś alternatywy do wydrukowania 0x0a
nowej linii?
Dziękuję i pozdrawiam.
echo -e
. Dzięki, znajduję rozwiązanie.printf "...\n"
zamiastecho
.Odpowiedzi:
Znak nowego wiersza
echo
polecenia to „\ n”. Biorąc następujący przykład:Spowodowałoby to wynik
Ważny jest tutaj parametr „-e” .
źródło
"echo -e ..."
zależy od echa bash do poprawnego działania (np.dash
po prostu wypisuje „-e”); ale „/ bin / echo” może (ale nie musi) również działać. Niestety (być może odpowiednio), wokół jest wiele echa i naprawdę nie chcesz się przejmować tym, który dostaniesz. Korzystanie'printf "....\n"
jest bardziej przenośną opcją dla środowisk env i powłok.POSIX 7 mówi, że nie możesz
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html
-e
nie jest zdefiniowany, a ukośniki odwrotne są zdefiniowane jako implementacja:chyba że masz opcjonalne rozszerzenie XSI.
printf
Zamiast tego użyj :Oznaczenia Format pliku :
Pamiętaj również, że Ubuntu 15.10 i większość dystrybucji implementuje
echo
oba jako:help echo
which echo
co może prowadzić do zamieszania.
źródło
Wreszcie poprawnie formatuję ten ciąg
printf "$string"
. Dziękuję wam wszystkim.źródło
$string
czym ty mówisz? Jak to się wiąże z pytaniem? Czego to nie dotyczy,\n
jak w dwóch pozostałych odpowiedziach?