2017-02-16 1 views
2

가정하자 나는 다음과 같은 파일이 있습니다그대로 문자를 탈출 유지 변수에 전체 파일을 읽어

$ cat input.txt 
hello\nworld 

내가 원하는 :

입니다
hello\nworld 

, 문자열 \n 파일에 그대로 존재를 이 파일을 셸의 변수에있는 것과 똑같이 읽으십시오. 그러나 그와 같은 파일에서 데이터를 읽기위한 모든 일반적인 방법은 쉘이 줄 바꿈으로 \n 순서를 해석 할 수 있도록, here 설명 : 이것은 나에게 전혀 예상치 못한

% test="$(<input.txt)" 
% echo "$test"   
hello 
world 
% test="$(cat input.txt)" 
% echo "$test" 
hello 
world 

, 솔직히 난 그 혼란 스러워요 인터넷에서이 문제에 대한 답을 찾을 수 없습니다. 나는이 문제에 대해 이미 누군가가 넘어 졌을 것으로 예상했다.

또한 한 줄씩 파일을 읽을 때 read -r을 사용하면 작동하지만 줄 단위로 읽지 않으려 고 전체 파일을 읽는 것을 보았습니다. 구체적으로 여기서 test 변수에 "hello \ nworld"문자열이 포함되기를 원합니다. 어떻게해야합니까?

+1

당신의'echo'는'echo -e'에 별명이 있습니까? – gudok

+0

@ 옥덕, 그렇지 않습니다. –

+0

'type echo'와'which echo'는 무엇을 말합니까? – Leon

답변

3

read -r -d '' <input.txt을 사용하면 전체 파일을 단일 문자열로 읽을 수 있습니다.

그러나 테스트에서이 문제가 발생하지 않습니다. 어쩌면 당신의 echo 그 해석 않습니다. 수정되었는지 확인하려면 printf "%s" "$test"을 시도하십시오.

+0

와우, 실제로 printf 트릭이 제대로 작동 했으므로'$ (

+0

예, zsh 문서에서 기본적으로 'echo'는 이스케이프 문자를 확장하고이 옵션을 끄려면 '-E' 옵션을 제공해야합니다. –

관련 문제