当前位置:  开发笔记 > 编程语言 > 正文

在bash脚本中从grep打印输出会产生损坏的字符串

如何解决《在bash脚本中从grep打印输出会产生损坏的字符串》经验,为你挑选了1个好方法。

我有以下简单的bash脚本,它将命令的输出存储在变量中并打印出来:

size=$(curl -sI "http://speedtest.reliableservers.com/1GBtest.bin" | grep -i "length")

echo "--> ${size} <--"

在终端中运行命令时,得到以下输出:

Content-Length: 1073471824

但是,当我运行调用命令的bash脚本时,得到以下输出:

 <--Content-Length: 1073741824

到底是怎么回事?



1> Kenney..:

问题是HTTP响应标头以CRLF或结尾\r\n。所述$(..)确实剥离\n,但不是\r,以便输出将是

--> 1073741824\r <--

其中\r回车光标设置到该行的开始,覆盖--><--

您可以剥除\rsed

size=$(curl -sI "http://speedtest.reliableservers.com/1GBtest.bin" | grep -i "length" \
     | sed -e 's/\r//' )

echo "--> ${size} <--"

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有