При беге
echo abcd | wc -c
это возвращается 5
.
Но слово abcd
длиной всего 4 символа.
Является ли echo
печать каким-то специальным символом после слова abcd
?
И я могу предотвратить echo
печать этого?
text-processing
echo
wc
user78050
источник
источник
printf
лучше чемecho
?wc -c
это не говорит вам, сколько символов что-то; это только говорит, сколько байтов это.Ответы:
echo
напечатать перевод строки (\n
) в конце строкиС некоторыми
echo
реализациями вы можете использовать-n
:и проверить:
С некоторыми другими вам нужна
\c
escape-последовательность:Портативно, используйте
printf
:(обратите внимание, что
wc -c
подсчитывает байты, а не символы (хотя в случаеabcd
они обычно эквивалентны). Используетсяwc -m
для подсчета символов).источник
echo
реализациях (по крайней мере, во всех Unix-совместимых)echo 'abcd\c'
выходыabcd
одни.echo -e 'abcd\c'
в Unix-совместимыхecho
реализациях будет выводиться-e abcd
.Если вы запускаете
echo
без-n
опции, после аргументов записывается символ новой строки. В противном случае, если вы наберете текстecho foo
, ваше следующее приглашение оболочки появится справа отfoo
. Такwc
что рассчитывает перевод строки.источник
По умолчанию
echo
печатает символ новой строки (\n
) после строки (именно поэтому вы видите приглашение оболочки на следующей строке вместо той же строки, гдеabcd
печатается.)Вы можете попробовать добавить
-n
параметр,echo
чтобы отключить завершающий символ новой строки.источник