다음을 통해 환경 변수를 설정하는 명령이 있습니다.
BLACKLIST=$(python tools.py gen-blacklist)
*
그러면 다음과 같이 점과 별표가 포함된 문자열이 생성됩니다 *
.
LISTEN,UNLISTEN,NOTIFY,SHOW,REFRESH,pg_notify,.*remove,.*delete,.*update,.*create,.*insert
문자열의 모든 점과 별표를 이스케이프 처리할 수 있기를 원합니다. 이것이 제가 시도한 것입니다.
TEMP=$(python tools.py gen-blacklist) && BLACKLIST=$(echo ${TEMP/.\*/\\.\\*}) && echo $BLACKLIST
그러나 이는 첫 번째 발생만 대체합니다.
LISTEN,UNLISTEN,NOTIFY,SHOW,REFRESH,pg_notify,\.\*remove,.*delete,.*update,.*create,.*insert
*
합계 의 모든 항목을 어떻게 피합니까 .
?
답변1
xy 문제 냄새가 나지만 어쨌든 ...
~에서매개변수 확장, 이것은 ${parameter/pattern/string}
-style 확장에 대해 설명서에 나와 있는 내용입니다.
패턴이 "/"로 시작하면 해당 패턴이 모두 문자열로 대체됩니다. 일반적으로 첫 번째 발생만 대체됩니다.
따라서 ${TEMP/.\*/\\.\\*}
다음으로 변경해야 합니다( 바로 다음에 나오는 추가 내용 참고 ${TEMP//.\*/\\.\\*}
)./
TEMP
이는
LISTEN,UNLISTEN,NOTIFY,SHOW,REFRESH,pg_notify,\.\*remove,\.\*delete,\.\*update,\.\*create,\.\*insert
답변2
견적 더보기(™) ....
노력하다:
TEMP=$(python tools.py gen-blacklist) &&
echo "$TEMP"
정말로 점과 별표를 피해야 한다면 (bash에서) 다음을 사용하세요:
TEMP=$(python tools.py gen-blacklist) &&
BLACKLIST=${TEMP//\.\*/\\.\\*} &&
echo "$BLACKLIST"