![bash에서 변수와 큰따옴표를 사용하면 종료되지 않는 오류가 발생합니다.](https://linux55.com/image/93478/bash%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%EC%99%80%20%ED%81%B0%EB%94%B0%EC%98%B4%ED%91%9C%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4%20%EC%A2%85%EB%A3%8C%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음 코드 가 있는데 계속 unterminated error
.$1
ABC-TXT-123
TEXT abc.123
ABC-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"라는 단어를 다시 넣는 대신 전체 줄을 바꾸려면...