반응형
줄 바꿈으로 분할하도록 IFS를 설정할 때 백 스페이스를 포함해야하는 이유는 무엇입니까?
IFS를 다음과 같이 줄 바꿈으로 분할하도록 설정할 때 백 스페이스가 필요한 이유가 궁금합니다.
IFS=$(echo -en "\n\b")
대신 이것을 (작동하지 않는) 사용할 수없는 이유는 무엇입니까?
IFS=$(echo -en "\n")
나는 Unix 라인 엔딩으로 파일을 저장하는 Linux 시스템에 있습니다. 줄 바꿈이 포함 된 파일을 16 진수로 변환했으며 줄 바꿈 문자로 "0a"만 사용합니다.
나는 많이 봤고 많은 페이지에서 백 스페이스 솔루션이 뒤 따르는 개행 문자를 문서화했지만 백 스페이스가 필요한 이유를 설명하는 것은 없습니다.
-데이비드.
bash 매뉴얼이 명령 대체 에 대해 말했듯이 :
Bash는 명령을 실행하고 명령 대체를 명령의 표준 출력으로 바꾸고 후행 줄 바꿈을 삭제하여 확장을 수행합니다.
따라서 추가 \b
하면 \n
.
이를 수행하는 더 깨끗한 방법은 다음 $''
과 같이 인용 을 사용하는 것입니다.
IFS=$'\n'
가장 쉬운 방법을 기억했습니다. debian wheezy에서 bash로 테스트했습니다.
IFS="
"
농담이 아닙니다 :)
사용 echo
및 명령 대체로 인해 해킹 입니다.
prompt> x=$(echo -en "\n")
prompt> echo ${#x}
0
prompt> x=$(echo -en "\n\b")
prompt> echo ${#x}
2
$()
줄 바꿈 및 후행 스트립 \b
방지를 \n
텍스트에 나타날 가능성은 희박하면서 뒤에 줄 바꿈되는 것을. IFS=$'\n'
줄 바꿈으로 분할하도록 IFS를 설정하는 더 좋은 방법입니다.
아무것도 할당하지 않고 Enter 키를 누르는 것도 작동합니다. 하지만 누군가 실수를해서 이해하기 어려운 것 같습니다.
IFS=
#This is a line
반응형
'developer tip' 카테고리의 다른 글
PLIST를 JSON으로 변환하는 명령 줄 도구? (0) | 2020.12.10 |
---|---|
자바 : Enum 대 Int (0) | 2020.12.10 |
java.lang.RuntimeException : 처리기 (android.os.Handler)가 죽은 스레드에서 처리기로 메시지를 전송 (0) | 2020.12.10 |
이전 버전의 Android Studio에서 설정을 어디에서 가져 오나요? (0) | 2020.12.10 |
각도 필터를 조건부로 만들기 (0) | 2020.12.10 |