read
bash 3.2를 사용하여 파일을 읽으려고 하는데 read
여러 공백의 인스턴스를 단일 공백으로 변환하는 것 같습니다.
예를 들어 다음 코드에는 "hello"와 "there" 사이에 두 개의 탭이 있고 "today"와 "world" 사이에 세 개의 공백이 있습니다.
while read -r LINE; do
echo $LINE
done <<< "hello there
today world"
그러나 실행하면 각 단어 그룹 사이에 공백 하나만 출력됩니다.
hello there
today world
대신 다음과 같이 공백을 보존하는 줄을 출력하고 싶습니다.
hello there
today world
이를 수행할 수 있는 방법이 있습니까? 읽지 않았다면 다른 것이 있습니까?
답변1
인쇄할 때 변수 주위에 따옴표를 넣으세요. 확장된 다음 토큰화되므로 및를 별도의 인수로 echo
가져옵니다 .hello
there
echo "$LINE"
또는 더 나은
printf '%s\n' "$LINE"
당신의 공백을 유지합니다
따라서 공백을 변경하는 것이 아니라 read
나중에 해당 변수를 참조하지 않는다는 것입니다.