このコマンドがありますが、更新する必要があります。/その後ドット-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'
これは次のことを意味します。S/
「グローバル」に置き換えます%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