![/bin/sed: -e 표현식 #1, 문자 56: 's'에 대한 알 수 없는 옵션 [중복]](https://linux55.com/image/168453/%2Fbin%2Fsed%3A%20-e%20%ED%91%9C%ED%98%84%EC%8B%9D%20%231%2C%20%EB%AC%B8%EC%9E%90%2056%3A%20's'%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%95%8C%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%98%B5%EC%85%98%20%5B%EC%A4%91%EB%B3%B5%5D.png)
다음 파일이 있어요테스트.txt콘텐츠:
- name: MONGODB_HOST
value: {{MONGODB-HOST}}
나는 바꾸고 싶다{{MONGODB-호스트}}다음 환경 변수를 사용하세요.
MONGODB_HOST=server.dev.example,server2.dev.example
명령은 다음과 같습니다:
/bin/sed -i 's,{{MONGODB-HOST}},'"$(MONGODB_HOST)"',' "test.txt";
다음과 같이 실패합니다.
/bin/sed: -e expression #1, char 56: unknown option to `s'
내가 떠날 경우:
MONGODB_HOST=server.dev.example
효과가있다. 실패 이유를 알아내는 데 도움을 주실 수 있나요?
답변1
명령 에서 기호를 sed
사용하여 ,
필드를 구분합니다. 대체 항목에는 해당 기호도 포함되어 있으므로 sed
이를 볼 때 필드 구분 기호라고 생각합니다. 결국에는 "실제" 필드 구분 기호가 표시되고 그 뒤에 인식할 수 없는 내용이 표시됩니다.
다른 필드 구분 기호를 사용해 보는 것이 /
일반적인 옵션입니다.
/bin/sed -i 's/{{MONGODB-HOST}}/'"${MONGODB_HOST}"'/' "test.txt"