"wc -c"가 에코에 다른 값 1을 인쇄하는 이유는 무엇입니까?

"wc -c"가 에코에 다른 값 1을 인쇄하는 이유는 무엇입니까?

달리는 동안

echo abcd | wc -c

그것은 반환합니다 5.
하지만 단어의 abcd길이는 4글자에 불과합니다.

? echo단어 뒤에 특수 문자를 인쇄하세요 .abcd

echo인쇄되지 않도록 할 수 있나요 ?

답변1

echo\n줄 끝 부분에 개행 문자 인쇄( )

echo abcd | xxd
0000000: 6162 6364 0a          abcd.

일부 echo구현의 경우 다음을 사용할 수 있습니다 -n.

-n후행 줄 바꿈을 출력하지 마십시오

그리고 테스트하세요:

echo -n abcd | wc -c
4

다른 경우에는 \c이스케이프 시퀀스가 ​​필요합니다.

\c: <newline>마지막 매개변수 이후의 출력을 억제합니다. 매개변수의 다음 문자는 모두 '\c'무시됩니다.

echo -e 'abcd\c' | wc -c
4

이식 가능하게는 다음을 사용하십시오 printf.

printf %s abcd | wc -c
4

( wc -c문자 수가 아닌 바이트 수를 계산합니다( abcd종종 동일 하지만 wc -m문자 수를 계산하는 데 사용됨).

답변2

echo이 옵션 없이 실행 하면 -n인수 뒤에 개행 문자가 작성됩니다. 그렇지 않고 를 입력하면 echo foo다음 셸 프롬프트가 오른쪽에 나타납니다 foo. wc개행 문자를 계산할 때도 마찬가지입니다.

echo인쇄되지 않도록 하려면 어떻게 해야 합니까 ?

echo -n abcd | wc -c

답변3

기본적 echo으로개행 문자( \n) 문자열 뒤(그래서 abcd동일한 줄이 아닌 다음 줄에 쉘 프롬프트가 표시됩니다.)

-n후행 개행을 비활성화 하는 매개변수를 추가해 볼 수 있습니다 echo.

echo -n abcd | wc -c
4

관련 정보