2016-02-24 84 views
1

爲什麼wc在消耗直接命令輸出和輸出存儲在變量中時報告不同的行數?來自命令輸出和變量的行數不同,wc,bash

$ virsh list --all | grep -P -- '(-|(\d+))\s+\S+\s+\S+' 
$ var=$(virsh list --all | grep -P -- '(-|(\d+))\s+\S+\s+\S+') 
$ wc -l <<< "${var}" 
1 
$ virsh list --all | grep -P -- '(-|(\d+))\s+\S+\s+\S+' | wc -l 
0 
$ echo "x${var}x" 
xx 
$ cat <<< ${var} 

$ 

1.,4.調用建議命令(virsh | grep)不輸出任何內容。 5.調用表明該變量包含空字符串。但由於某種原因,wc在invoaction 3中報告一行。

回答

1

問題出在Here string重定向(三角括號)。它可能會增加新的生產線:

$ a='' 
$ xxd <<< "$a" 
00000000: 0a 
+1

還有一個討論[這裏](http://stackoverflow.com/questions/33245568/why-does-bash-always-add-a-newline-when-expanding-這裏串)。 – Armali