[英]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.