linux - 在 linux shell 脚本中追加字符串

标签 linux sh

我正在编写 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 组合键入

或者您可以使用 recodedos2unix 或类似工具来删除初始 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/

相关文章:

bash - bash 中的多行赋值

Java进程在Linux上被卡住(?)

mysql - 仅适用于静态查询,如何将其与变量一起使用

linux - 我可以在 Ubuntu 中向 Qt 应用程序添加全局快捷方式 Hook 吗?

linux - nginx location deny by file extension 语法

Linux 上的 Java - 打开文件管理器

linux - AWK解释 awk -F'AUTO_INCREMENT =' ' NF==1{print "0";next}{sub(/.*/,"",$2);print $2}'

linux - Linux 中是否可以通过/sys 获取特定核心的当前 CPU 利用率?

Python——读取和比较行和列

c - 为什么我在这里遇到段错误?