Bash에서 동적 문자열을 백슬래시하는 방법

Bash에서 동적 문자열을 백슬래시하는 방법

최종 사용자가 Perl 정규식 문자열을 대체하기 위해 백슬래시를 입력할 필요가 없도록 자동으로 백슬래시 변수를 만들고 싶습니다.

API_URI="http://something/api"
FIND="(API_URI)(.*?[\=])(.*?[\'](.*?[\']))"
REPLACE="\\1\\2 \'$API_URI\'"
perl -pi -e "s/${FIND}/${REPLACE}/" file.ext

답변1

원한다면 Perl을 사용하세요. 하지만 이 sed가 효과가 있지 않을까요?

echo "$API_URI" | sed 's/\//\\\//g'
http:\/\/something\/api

아니면... Bash를 직접 사용하세요:

echo "${API_URI//\//\\/}"
http:\/\/something\/api

관련 정보