簡體   English   中英

在bash腳本中從grep打印輸出會產生損壞的字符串

[英]Printing output from grep in bash script yields broken string

我有以下簡單的bash腳本,它將命令的輸出存儲在變量中並打印出來:

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

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

在終端中運行命令時,得到以下輸出:

Content-Length: 1073471824

但是,當我運行調用命令的bash腳本時,得到以下輸出:

 <--Content-Length: 1073741824

到底是怎么回事?

問題是HTTP響應標頭以CRLF\\r\\n結尾。 $(..)會去除\\n而不是\\r ,因此輸出將是

--> 1073741824\r <--

其中\\r回車將光標設置到行的開頭,並用<--覆蓋-->

您可以使用sed剝離\\r

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM