bash:将变量注入字符串会增加额外的\ r \ n

时间:2012-04-27 16:22:58

标签: bash curl

我有一个使用curl将文件发送到第三方云文件存储的脚本。

我正在使用grep来提取一个在http响应中提供给我的URL

看起来像这样

curl -X PUT -T media/file.tar.gz -D - \
     -H "ETag: ${md5}" \
     -H "Content-Type: application/x-gzip" \
     -H "${AuthToken}" \
     -H "X-Object-Meta-Date: ${today}" \
     "${StorageUrl}/dp/file1.tar.gz"

然后我在网址上收到了错误的请求 打印出像

'PUT /v1/MossoCloudFS100213=123-123-1233a-ss9\r/dp/file1.tar.gz'

看到\ r \ n在我的变量和/ dp /?

之间注入了令人烦恼的事情

1 个答案:

答案 0 :(得分:2)

我猜您从Web请求获得$StorageUrl值,并且Web响应行以CRLF结束(Web标准通常需要CRLF行结尾)。 shell为你删除了LF(换行符),但没有删除CR(\r,回车)。在使用URL之前,您可能需要自己处理。