Podczas biegania
echo abcd | wc -c
powraca 5
.
Ale słowo abcd
ma tylko 4 znaki.
Czy echo
po słowie jest drukowany jakiś znak specjalny abcd
?
Czy mogę temu zapobiec echo
?
text-processing
echo
wc
użytkownik78050
źródło
źródło
printf
lepszy niżecho
?wc -c
nie mówi ci, ile znaków jest czymś; mówi tylko, ile to bajtów.Odpowiedzi:
echo
wypisz newline (\n
) na końcu liniiW przypadku niektórych
echo
implementacji możesz użyć-n
:i przetestuj:
W przypadku niektórych innych potrzebujesz
\c
sekwencji ucieczki:Przenośnie użyj
printf
:(zwróć uwagę, że
wc -c
liczy się bajty, a nie znaki (choć w przypadkuabcd
są one generalnie równoważne). Użyjwc -m
do zliczenia znaków).źródło
echo
implementacjach (wszystkie zgodne jedynek Unix co najmniej), jest toecho 'abcd\c'
, że wyjśćabcd
sama.echo -e 'abcd\c'
wecho
implementacjach zgodnych z Uniksem wyświetlałby dane wyjściowe-e abcd
.Jeśli uruchomisz
echo
bez-n
opcji, po argumentach zapisuje znak nowej linii. W przeciwnym razie, jeśli wpiszeszecho foo
, następny monit powłoki pojawi się po prawej stroniefoo
. Więcwc
liczy się przełamane.źródło
Domyślnie
echo
wypisze znak nowego wiersza (\n
) po łańcuchu (dlatego w następnym wierszu zamiast wiersza polecenia, w którymabcd
jest drukowany , pojawi się monit powłoki ).Możesz spróbować dodać
-n
parametr,echo
aby wyłączyć końcowy znak nowej linii.źródło