bash:함수 내에서 줄 바꿈을 사용하거나 사용하지 않고 인쇄합니까?

bash:함수 내에서 줄 바꿈을 사용하거나 사용하지 않고 인쇄합니까?

가장 안전한 옵션은 줄 바꿈 없이 결과를 인쇄하는 것입니다. 다음 스크립트와 같이 입력을 줄로 구분하지 않으려는 다른 명령으로 명령을 파이프할 때 문제가 발생할 수 있기 때문입니다.

function test_nl {
    echo result
}

function test_no_nl {
    printf %s result
}

test_nl | xxd -p | wc -c
#prints 15
test_no_nl | xxd -p | wc -c
#prints 13

test_nl 방법이 더 나은 상황이 있습니까?

답변1

의지하다. 위와 같이 출력이 정확히 무엇인지 항상 확인하려는 경우 xxd줄 바꿈은 성가신 것일 수 있습니다. 그러나 일반적인 용도에서는 uname, 및 기본적으로 그러한 유틸리티를 고려하십시오 uptime.date하다후행 줄 바꿈을 인쇄합니다. 이것은 확실히 관례입니다. 명령줄에서 실행되는 프로그램이 후행 줄 바꿈을 인쇄하지 않으면 많은 쉘은 동일한 줄에 프롬프트를 인쇄합니다(아래 참조). 또한, 예를 들어 명령 대체는 이를 보완하기 위해 후행 줄 바꿈을 제거합니다.

bash$ date -u | tr -d '\n' 
Sat 14 Nov 2020 03:48:19 PM UTCbash$ 

답변2

어떤 경우에는 후행 줄 바꿈이 선호됩니다.

  • 출력은 다음과 같아야합니다.사람이 읽을 수 있습니다.많은 프롬프트( $PS1캐리지 리턴 포함)는 개행 문자로 끝나지 않는 한 명령 출력의 마지막 줄의 일부 또는 전체를 덮어씁니다.
  • 출력은일련의 기록,한 줄에 하나씩. 개행 구문 분석 -종료개행 문자를 구문 분석하는 것보다 줄이 더 쉽습니다.분리된와 같은 표준 쉘 도구를 사용하십시오 read.
  • 이상적으로 로깅은 위의 경우 중 특별한 경우일 뿐입니다. 즉, 실제로 인간이 소비할 수 없는 일부 사용자 정의 형식을 사용하지 않는 한입니다.

관련 정보