이 BASH 스크립트는 예상대로 작동합니다. bash에게 새 줄을 구분하고 변수를 반복하도록 지시하는 데이터 행이 포함된 변수($foo)가 있습니다.
#!/bin/bash
foo="
Original Line1
Original Line2
Original Line3
"
IFS=$'\n'
for line in $foo
do
echo $line
done
예상한 대로 데이터는 자체 라인에 있습니다.
Original Line1
Original Line2
Original Line3
$foo 변수에서 "Line2" 텍스트를 "EXAMPLE"로 바꾸기 위해 스크립트에 이 줄을 추가했습니다.
foo=$( echo $foo | sed "s|Line2|EXAMPLE|" )
스크립트를 실행하면 데이터가 더 이상 한 줄로 구분되지 않고 한 줄로 인쇄됩니다. 변수의 값을 바꾸고 새 행을 유지하는 방법을 잘 모르겠습니다.
Original Line1 Original EXAMPLE Original Line3
답변1
따옴표가 없는 변수는 $foo
셸별로 분할됩니다. 자세한 설명은 다음을 참조하세요.공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까?.
따옴표를 사용하면 다음을 방지할 수 있습니다.
echo "$foo" | sed "s|Line2|EXAMPLE|"
실제로는 이러한 간단한 교체가 필요하지 않습니다 sed
. 쉘 교체를 사용할 수 있습니다.
foo="${foo/Line2/EXAMPLE}"