Bash 기술:변 수 를 줄 바 꿈 문자 로 할당 합 니 다(파일 이 줄 바 꿈 문자 로 끝 날 지 판단 합 니 다)
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)"
여기 서 tail filename-c 1 명령 을 사용 하여 filename 파일 의 마지막 문 자 를 가 져 옵 니 다.
실제 사용 시 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 로 돌아 갑 니 다.이 Bash 기법 에 대해 서 는 변 수 를 줄 바 꿈 문자 로 지정 하고 파일 이 줄 바 꿈 문자 로 끝 나 는 지 판단 하 는 글 을 소개 합 니 다.더 많은 변 수 를 줄 바 꿈 문자 로 지정 하 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 을 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
변수 이름 정보코드를 쓸 때는 반드시 변수를 사용해야 한다 나는 그 변수의 명명이 매우 중요하다고 생각한다 아직 현장에서의 경험이 없기 때문에, 이렇게 말하는 것이 비교적 좋다면 ####$namae//모드 1 이것에 관해서는 틀려...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.