text.txt
이런 파일이 있어요
line1
line2
line3
각 줄을 반복하고 에코하는 스크립트를 작성하고 싶습니다.
modified line1
modified line2
modified line3
다음은 매우 일반적인 솔루션에 대한 스크립트입니다.
while IFS= read -r line; do
echo modified $line
done <<< $(cat ~/text.txt)
그러나 내가 얻는 결과는 다음과 같습니다.
modified line1 line2 line3
무엇이 잘못되었나요?
답변1
문제는 마지막 줄에 있습니다. 변수(명령 대체)가 필요하지 않거나 파일을 이미 읽을 수 있기 cat
때문입니다 . read
이렇게 하면:
while IFS= read -r line; do
echo modified $line
done < ~/text.txt
효과가있다.
또한 다음과 같이 변수를 인용하면 명령이 작동합니다.
"$(cat ~/text.txt)"
bash는 인용하지 않는 한 변수의 개행 문자를 무시하기 때문입니다. 그러나 이는 상황을 지나치게 복잡하게 만듭니다.