我正在编写 Linux shell 脚本来测试上传文件。
在我们将文件上传到存储系统之前,我需要使用 rest 完整服务获取存储 url,获取 url 成功。在存储 url 中我想附加一个字符串。
Url=$(grep "X-Storage-Url" swiftAuth.txt) //read url value from file
storageFileUrl=${storageUrl#*:} //remove extra string before :
echo $storageFileUrl"/111"
url 类似于 https://cloudstorage.com/auth/1.0
所以当我试图在运行时追加字符串时,它给了我错误的值 结果是:
/111s://cloudstorage.com/auth/1.0
上面的结果是错误的我要结果
https://cloudstorage.com/auth/1.0/111
请帮帮我
谢谢。
最佳答案
不,您没有得到 /111s://cloudstorage.com/auth/1.0
。您正在获取 https://cloudstorage.com/auth/1.0␍/111
。
␍
为回车,也称为Ctrl-M或^M
。
Bash 认为这是一个常规字符。您应该能够通过简单的 ${storageFileUrl%␍}
删除它。您可以在命令行、vim 或 emacs 中使用 Ctrl-VCtrl-M 组合键入 ␍
。
或者您可以使用 recode
或 dos2unix
或类似工具来删除初始 grep 输入中的 ␍s。
或者您可以使用 sed 将 grep 和剥离合并为一个步骤,它也可以为您处理 ␍(使用 URL 不能包含空格这一事实):
storageFileUrl=$(sed -n 's/X-Storage-Url:[ \t]*\([^ \t\r]*\).*/\1/p')
注意:MIME 为 header 指定了 ␍␊ 行结尾,而 Unix 仅使用 ␊,所以在那里看到 ␍ 是一种预期。
关于linux - 在 linux shell 脚本中追加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19288039/