W przypadku niektórych echoimplementacji możesz użyć -n:
-n nie wysyłaj końcowego znaku nowej linii
i przetestuj:
echo -n abcd | wc -c
4
W przypadku niektórych innych potrzebujesz \csekwencji ucieczki:
\c: Pomiń <newline>argument, który w przeciwnym razie następuje po ostatnim argumencie w danych wyjściowych. Wszystkie znaki następujące '\c'po argumentach zostaną zignorowane.
echo -e 'abcd\c' | wc -c
4
Przenośnie użyj printf:
printf %s abcd | wc -c
4
(zwróć uwagę, że wc -cliczy się bajty, a nie znaki (choć w przypadku abcdsą one generalnie równoważne). Użyj wc -mdo zliczenia znaków).
Należy pamiętać, że chodzi o to, że w niektórych echoimplementacjach (wszystkie zgodne jedynek Unix co najmniej), jest to echo 'abcd\c', że wyjść abcdsama. echo -e 'abcd\c'w echoimplementacjach zgodnych z Uniksem wyświetlałby dane wyjściowe -e abcd.
Jeśli uruchomisz echobez -nopcji, po argumentach zapisuje znak nowej linii. W przeciwnym razie, jeśli wpiszesz echo foo, następny monit powłoki pojawi się po prawej stronie foo. Więc wcliczy się przełamane.
Domyślnie echowypisze znak nowego wiersza ( \n) po łańcuchu (dlatego w następnym wierszu zamiast wiersza polecenia, w którym abcdjest drukowany , pojawi się monit powłoki ).
Możesz spróbować dodać -nparametr, echoaby wyłączyć końcowy znak nowej linii.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.
printf
lepszy niżecho
?