9

可能重复:
bash echo bash 变量中给出的文件行数

想知道如何将文本文件中的行数输出到屏幕,然后将其存储在变量中。我有一个名为 stats.txt 的文件,当我运行wc -l stats.txt它时输出8 stats.txt

我试着做x = wc -l stats.txt认为它只会存储数字,其余的只是为了视觉,但它不起作用:(

谢谢您的帮助

4

2 回答 2

18

执行此操作有两种 POSIX 标准语法:

x=`cat stats.txt | wc -l`

或者

x=$(cat stats.txt | wc -l)

他们都运行程序并将脚本中的调用替换为命令的标准输出,在这种情况下将其分配给$x变量。但是,请注意,两个都修剪结束换行符(这实际上是您想要的,但有时可能很危险,当您期望换行时)。

此外,第二种情况可以很容易地嵌套(例如:)$(cat $(ls | head -n 1) | wc -l)。你也可以用第一种情况来做,但它更复杂:

`cat \`ls | head -n 1\` | wc -l`

还有报价问题。您可以将这些表达式包含在双引号内,但使用反引号,您必须在命令内继续引用,而使用括号允许您“开始一个新的引用”组:

"`echo \"My string\"`"
"$(echo "My string")"

希望这会有所帮助=)

于 2012-10-04T16:46:24.807 回答
3

你可以试试:

x=`cat stats.txt | wc -l`

或(来自另一个.anon.coward 的评论):

x=`wc -l < stats.txt`
于 2012-10-04T16:39:22.713 回答