echo -e "\n" 이 한 줄이 아닌 두 개의 빈 줄을 제공하는 이유는 무엇입니까?

echo -e "\n" 이 한 줄이 아닌 두 개의 빈 줄을 제공하는 이유는 무엇입니까?

file.txt에 "aaaa" 줄이 있고 그 뒤에 빈 줄만 추가하고 그 빈 줄 뒤에 텍스트 줄을 추가하고 싶다고 가정해 보겠습니다.
나는 다음과 같이 했습니다:
echo -e "\n" >> file.txt
echo "bbbb" >> file.txt 방금 echo "bbbb" >> file .txt를 사용했을 때 aaaa와 bbbb 사이에 두 개의 빈 줄이
보였습니다.
두 줄의 텍스트 사이에 빈 줄이 없습니다.
왜 이런 일이 발생하며 어떻게 제거합니까?

답변1

echo인수로 사용된 문자열을 출력한 후 출력 문자열 끝에 개행 문자를 추가하여 줄을 종료합니다.

그리고

echo "string"

당신은 string끝에 개행 문자를 얻게 될 것입니다.

따라서

echo -e "\n"

끝에 개행 문자와 개행 문자가 표시됩니다(즉, 두 개의 빈 줄).

추가 개행 문자가 필요하지 않거나(예: 종료되지 않은 행 출력) echo해당 옵션을 사용 -n하거나, 이 경우 빈 행만 삽입하려는 경우 인수와 함께 echo ""또는 인수 없이 사용하세요.echo

에서 help echo:bash

Options:
  -n        do not append a newline
  -e        enable interpretation of the following backslash escapes

다른 쉘로 이식 가능한 것을 원한다면 다음을 대신 bash사용하십시오 printf.

printf '\n' >>file.txt
printf 'bbbb\n' >>file.txt

또는 단일 리디렉션을 통해 두 문을 모두 실행하는 또 다른 방법은 다음과 같습니다.

{
    printf '\n'
    printf 'bbbb\n'
} >>file.txt

아니면 단순히

printf '\nbbbb\n' >>file.txt

관련된:

관련 정보