문제

나는 문자열 안에서 특별한 숯을 탈출하고 싶습니다. 나는 그 끈을 반향하고 일부 SED를 통해 파이프를 가야한다고 생각했다. 이것은 백 티크 내부에서 작동하지 않는 것 같습니다. 그래서 왜

echo "foo[bar]" | sed 's/\[/\\[/g'

반품

foo\[bar]

하지만

FOO=`echo "foo[bar]" | sed 's/\[/\\[/g'` && echo $FOO

그냥 돌아옵니다

foo[bar]

?

SED와 달리 TR은 백 틱 내부에서 완벽하게 작동합니다.

FOO=`echo "foo[bar]" | tr '[' '-' ` && echo $FOO

보고

foo-bar]
도움이 되었습니까?

해결책

백 티크 사이의 백 슬래시를 피해야합니다.

FOO=`echo "foo[bar]" | sed 's/\\[/\\\\[/g'` && echo $FOO

또는 사용하십시오 $() (이것은 실제로 권장 방법입니다).

FOO=$(echo "foo[bar]" | sed 's/\[/\\[/g') && echo $FOO

다른 팁

백 틱을 사용하지 않고 $ ()를 사용하는 것은 어떻습니까?

FOO=$(echo "foo[bar]" | sed 's/\[/\\[/g') && echo $FOO

백 티크 사용을 고집한다면, 나는 당신이 추가 탈출을 더블로 탈출해야한다고 생각합니다.

FOO=`echo "foo[bar]" | sed 's/\\[/\\\\[/g'` && echo $FOO

일반적으로, 그것은 외설적 인 경우입니다

FOO=`echo "foo[bar]" | sed 's/\[/\\\[/g'` && echo $FOO
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top