我有以下简单的bash脚本,它将命令的输出存储在变量中并打印出来:
size=$(curl -sI "http://speedtest.reliableservers.com/1GBtest.bin" | grep -i "length")
echo "--> ${size} <--"
在终端中运行命令时,我得到以下输出:
Content-Length: 1073471824
但是当我运行这个调用命令的bash脚本时,我得到以下输出:
<--Content-Length: 1073741824
发生了什么事?
答案 0 :(得分:5)
问题是HTTP响应标头以CRLF
或\r\n
结尾。 $(..)
会删除\n
但不删除\r
,以便输出
--> 1073741824\r <--
其中\r
回车将光标设置为行的开头,用-->
覆盖<--
。
您可以使用\r
:
sed
size=$(curl -sI "http://speedtest.reliableservers.com/1GBtest.bin" | grep -i "length" \
| sed -e 's/\r//' )
echo "--> ${size} <--"