可能重复:
bash echo number of lines of file given in a bash variable
想知道如何将文本文件中的行数输出到屏幕,然后将其存储在变量中。
我有一个名为stats.txt的文件,当我运行wc -l stats.txt
时,它会输出8 stats.txt
我尝试x = wc -l stats.txt
认为它只会存储数字而其余部分仅用于视觉但不起作用:(
感谢您的帮助
答案 0 :(得分:17)
执行此操作有两种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")"
希望这有助于=)
答案 1 :(得分:3)
x=`cat stats.txt | wc -l`
或(来自another.anon.coward的评论):
x=`wc -l < stats.txt`