bash에서 변수와 큰따옴표를 사용하면 종료되지 않는 오류가 발생합니다.

bash에서 변수와 큰따옴표를 사용하면 종료되지 않는 오류가 발생합니다.

다음 코드 가 있는데 계속 unterminated error.$1ABC-TXT-123TEXT abc.123ABC-TXT-123

#!/bin/bash
id=$1
if [[ $id =~ .*TXT.* ]]; then
    sed -i "s/TEXT abc.*/TEXT $id/" someDataFile
fi

답변1

다음 명령과 잘 작동합니다.

$ cat > test
asd asd asd asd
asd TEXT abc.123 asd
asd asd asd asd

$ var='ABC-TXT-123'
$ sed -i "s/TEXT abc.*/TEXT $var/" test

$ cat test
asd asd asd asd asd
asd TEXT ABC-TXT-123
asd asd asd asd asd

어쩌면 해당 파일의 일부를 우리에게 제공해 주실 수도 있습니다...

답변2

''OSX에서는 작동하려면 한 가지를 더 추가해야 했습니다 .

#!/bin/bash
id=$1
if [[ $id =~ .*TXT.* ]]; then
    sed -i '' 's/TEXT abc.*/TEXT '$id'/' someDataFile
fi

이는 someDataFile의 내용이 "TEXT abc.123"에서 "TEXT ABC-TXT-123"으로 변경됨을 의미합니다. 그러나 설명 요구 사항이 약간 다르므로 다음이 필요할 수 있습니다.

    sed -i '' 's/TEXT abc.*/'$id'/' someDataFile

대신 "TEXT"라는 단어를 다시 넣는 대신 전체 줄을 바꾸려면...

관련 정보