달릴 때
echo abcd | wc -c
를 반환합니다 5
.
그러나 단어의 abcd
길이는 4 자입니다.
되어 echo
단어 후 일부 특수 문자를 인쇄 abcd
?
그리고 echo
그 인쇄를 막을 수 있습니까?
답변
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
문자 수를 계산하는 데 사용 )).
답변
옵션 echo
없이 실행 -n
하면 인수 뒤에 개행 문자를 씁니다. 그렇지 않으면을 입력 echo foo
하면 다음 쉘 프롬프트가 오른쪽에 나타납니다 foo
. 그래서 wc
줄 바꿈을 기대하고있다.
echo
인쇄를 방지하려면 어떻게 해야합니까?
echo -n abcd | wc -c
답변
기본적으로 문자열 다음에 줄 바꿈 문자 ( )를 echo
인쇄 합니다 (이렇게하면 인쇄 된 줄과 같은 줄 대신 다음 줄에 쉘 프롬프트 가 표시됩니다).\n
abcd
후행 줄 바꿈 문자를 사용하지 않도록 -n
매개 변수를 추가 할 수 있습니다 echo
.
echo -n abcd | wc -c
4