을 삼키고없이 라인으로 변수 라인을 읽어 C
문자열). 불행히도이 코드의 어딘가에있는 \
문자는 단순히 제거됩니다. 왜, 어떻게 수정해야합니까?나는 라인으로 변수 라인을 읽기 위해이 조각을 사용하고있는 문자
EDIT : 샘플 입력이됩니다 만 \
벗겨
foo $'bar'
fee $'ber\fbir'
참고 아니라 C
문자열로 문자열을 해석 나중에 사용될 $''
.
echo "${lines}" | sed 's/\\/\\\\/g' | while read line; do something with ${line}; done
UPDATE : 난 그냥 몇 가지 테스트 후 위 나오지 라인을 업데이트했습니다, 지금 그것을 시도, 그들은 다음과 같이 여전히 read line
에 존재하므로
쉘은 변수 확장을 담당하므로 '$ {line}'의 이스케이프는 스크립트가 처리 될 때 제거됩니다. 이스케이프가 쉘에서 살아남기를 원하면 이스케이프를 벗어나야합니다. –
@ jordanm의 대답과 마찬가지로'read -r'을 찾고 있습니다. 그의 대답은 지금은 삭제 될 것으로 보인다. – tripleee
정식 답은'while IFS = read -r line;이다. ... '. 또한, bash를 사용하기 때문에 다음 문자열을 사용하십시오 :'while ... done <<< "$ lines"' –