Bash 기법: 변 수 를 줄 바 꿈 문자 로 지정 하여 파일 이 줄 바 꿈 문자 로 끝 날 지 여 부 를 판단 합 니 다.

3442 단어 linuxbashshell
변 수 를 줄 바 꿈 문자 로 할당 합 니 다.
bash 에서 변 수 를 줄 바 꿈 문자 로 지정 하려 면 '
'
효과 가 없 으 며 $'
'
로 써 야 합 니 다.구체 적 인 예 는 다음 과 같다.
$ newline='
' $ echo $newline
$ newline=$'
' $ echo $newline

new line 변 수 를 'n' 으로 할당 하 는 것 을 볼 수 있 습 니 다. 줄 바 꾸 기 자체 가 아 닌 n 이라는 문자열 을 얻 었 습 니 다.
이것 은 bash 와 C 언어 가 다른 곳 이다.C 언어 에서 'n' 은 줄 바 꿈 문자 자체 에 대응 하고 한 글자 만 있 습 니 다.'n' 은 문자열 에 대응 합 니 다.그러나 bash 에서 'n' 도 하나의 문자열 에 대응 합 니 다.
new line 대 가 를 $'
'
로 하면 줄 바 꿈 자 체 를 얻 을 수 있 습 니 다.man bash 가 이 쓰기 에 대한 설명 은 다음 과 같 습 니 다.
Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows:
    
new line \r carriage return \t horizontal tab \' single quote

The expanded result is single-quoted, as if the dollar sign had not been present.
즉, $'string' 이 표기 법 은 C 언어의 전의 문 자 를 사용 하여 해당 하 는 문자 자 체 를 얻 을 수 있다.
파일 의 마지막 줄 이 줄 바 꿈 문자 로 끝 날 지 판단 합 니 다.
Linux 에 서 는 다음 명령 을 사용 하여 파일 의 마지막 줄 이 줄 바 꿈 문자 로 끝 날 지 여 부 를 판단 할 수 있 습 니 다.
test -n "$(tail filename -c 1)"

파일 name 파일 의 마지막 문 자 를 가 져 오 려 면 tail filename -c 1 명령 을 사용 하 십시오.
실제 사용 시 filename 을 구체 적 으로 판단 할 파일 이름 으로 바 꿔 야 합 니 다.tail 명령 은 파일 끝의 내용 을 가 져 올 수 있 습 니 다.그것 의 -c 옵션 은 파일 끝의 몇 개의 바이트 를 가 져 올 지 지정 합 니 다.
man tail 의 -c 옵션 에 대한 설명 은 다음 과 같 습 니 다.
-c, --bytes=K
output the last K bytes; alternatively, use -c +K to output bytes starting with the Kth of each file.
즉, tail -c 1 명령 은 주어진 파일 을 가 져 오 는 마지막 문 자 를 지정 합 니 다.
파일 의 마지막 문 자 를 가 져 온 후 이 문자 가 줄 바 꿈 문자 인지 아 닌 지 를 판단 해 야 합 니 다.이 문자 가 줄 바 꿈 문자 와 같은 지 직접 판단 할 수 없 으 며, 이 문자 가 비어 있 는 지 여 부 를 판단 해 야 합 니 다.
내부 명령 의 출력 결 과 를 가 져 오 려 면 $(tail filename -c 1) 명령 을 바 꾸 면 bash 가 끝 에 있 는 줄 바 꿈 자 를 제거 하기 때 문 입 니 다.
따라서 파일 의 마지막 줄 이 줄 바 꿈 문자 로 끝 날 때 $(tail filename -c 1) 명령 바 꿈 은 가 져 온 줄 바 꿈 자 를 제거 하고 최종 결 과 는 비어 있 으 며 줄 바 꿈 자 체 를 되 돌려 주지 않 습 니 다.
man bash 가 명령 교체 (command substitution) 에 대한 설명 은 다음 과 같 습 니 다.
Command substitution allows the output of a command to replace the command name. There are two forms:
        $(command)
    or
        `command`

Bash performs the expansion by executing command and replacing the command substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they may be removed during word splitting.
명령 이 바 뀌 면 끝 에 있 는 줄 바 꿈 자 를 지 울 수 있 습 니 다.$(tail filename -c 1) 명령 교 체 는 끝의 줄 바 꿈 자 를 제거 하기 때문에 최종 결과 가 빈 문자열 인지 여 부 를 판단 하기 위해 test -n 를 사용 합 니 다.
파일 의 마지막 줄 이 줄 바 꿈 문자 로 끝나 면 $(tail filename -c 1) 결 과 는 비어 있 고 test -n 명령 은 1, 즉 false 로 돌아 갑 니 다.
파일 의 마지막 줄 이 줄 바 꿈 문자 로 끝나 지 않 으 면 $(tail filename -c 1) 결과 가 비어 있 지 않 습 니 다. test -n 명령 은 0, 즉 true 로 돌아 갑 니 다.
실제 수요 에 따라 test -z 로 판단 할 수 있다.파일 의 마지막 줄 이 줄 바 꿈 문자 로 끝나 면 $(tail filename -c 1) 결 과 는 비어 있 고 test -z 명령 은 0, 즉 true 로 돌아 갑 니 다.

좋은 웹페이지 즐겨찾기