命令输出和变量的行数不同,wc,bash

时间:2016-02-24 00:50:14

标签: bash wc

为什么wc在使用直接命令输出时以及何时将输出存储在变量中时报告不同的行数?

$ 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 个答案:

答案 0 :(得分:1)

问题出在Here string重定向(三角括号)。它可能会添加新行:

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