이 명령이 있는데 업데이트해야 합니다./그 후에야도트-D로 대체되어야 합니다."%2F".
curl -X GET --header 'Accept: application/json' 'http://abc.abc:8080/api/server/sendUnixCommand?command=pt' -d "/abc/abc/abc/abc-abc/abc/abc/" ls
나는 이것에 대해 매우 새로운 것이므로 어떤 도움이라도 대단히 감사하겠습니다.
또한 위의 전체 컬 명령이 변수의 일부이므로 분할할 수 없다는 점을 강조하고 싶습니다. 문자열이 길어서 교체해야 합니다./그 후에야pt'-d
답변1
사용할 수 있는 sed 모드는 다음과 같습니다.
sed 's|/|%2F|g'
이는 다음을 의미합니다: "에스/
전역" 으로 대체하십시오 %2F
. sed에서는 일반적으로 s/foo/bar/g
구문이 표시되지만 구분 기호는 다른 문자일 수도 있습니다. 이스케이프를 피하기 위해 대신 /
a를 사용했습니다 |
.
이것을 명령에 통합하려면(사용 bash
) 서브셸을 사용할 수 있습니다.
curl \
-X GET \
--header 'Accept: application/json' \
'http://abc.abc:8080/api/server/sendUnixCommand?command=pt' \
-d "$(sed 's|/|%2F|g' <<< "/abc/abc/abc/abc-abc/abc/abc/")" \
ls
이 경우 $(sed 's|/|%2F|g' <<< "/abc/abc/...")
교체해야 할 부분에 이전 주장을 넣었습니다.
귀하의 의견에서 변수에 넣고 싶다고 말씀하셨습니다. 이것은 가능하다. 이 경우에는 단순히 서브셸 외부의 공백을 이스케이프 처리하여 이를 달성했습니다.
$ VAR=curl\ -X\ GET\ --header\ 'Accept: application/json'\ 'http://abc.abc:8080/api/server/sendUnixCommand?command=pt'\ -d\ "$(sed 's|/|%2F|g' <<< "/abc/abc/abc/abc-abc/abc/abc/")"\ ls
$ echo $VAR
curl -X GET --header Accept: application/json http://abc.abc:8080/api/server/sendUnixCommand?command=pt -d %2Fabc%2Fabc%2Fabc%2Fabc-abc%2Fabc%2Fabc%2F ls