developer tip

줄 바꿈으로 분할하도록 IFS를 설정할 때 백 스페이스를 포함해야하는 이유는 무엇입니까?

optionbox 2020. 12. 10. 19:52
반응형

줄 바꿈으로 분할하도록 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

참고 URL : https://stackoverflow.com/questions/16831429/when-setting-ifs-to-split-on-newlines-why-is-it-necessary-to-include-a-backspac

반응형