이 bash 스크립트의 문자열을 이스케이프하는 방법은 무엇입니까?

이 bash 스크립트의 문자열을 이스케이프하는 방법은 무엇입니까?

이 내 꺼야 foo.sh:

#!/bin/bash

sed -i -- 's/<meta http-equiv="Content-Security-Policy" content="default-src * data: blob: 'unsafe-inline' 'unsafe-eval' ws: wss:;">/<meta my custom meta>/g' ../app-prod/ios/project/www/application/index.html

작은따옴표, 큰따옴표 및 별표 기호를 이스케이프하는 방법을 이해하지 못합니다.

답변1

sed 주위에 큰따옴표를 사용해야 할 수도 있습니다. 그런 다음 표현식에서 큰따옴표와 와일드카드를 이스케이프 처리합니다. 다음과 같이 해야 합니다.

sed -i "s|<meta http-equiv=\"Content-Security-Policy\" content=\"default-src \* data: blob: 'unsafe-inline' 'unsafe-eval' ws: wss:;\">|<meta my custom meta>|g" /path/to/file.html

(전체 표현식을 큰따옴표로 묶어야 할지 잘 모르겠습니다. 작은따옴표로 묶인 표현식에서 작은따옴표를 이스케이프 처리하는 것이 특정 조건에서 실패할 수 있다는 것을 기억하는 것 같습니다. 이름을 지정할 수는 없습니다.)

관련 정보