可能重复:
bash echo number of lines of file given in a bash variable输出数量在Unix中筛选
想知道如何输出线在一个文本文件的数量屏幕,然后将其存储在一个变量中。 我有一个名为stats.txt文件,当我运行wc -l stats.txt
它输出8 stats.txt
我试图做x = wc -l stats.txt
以为它只会存储数量,剩下的只是视觉,但它不工作:(
感谢您的帮助
可能重复:
bash echo number of lines of file given in a bash variable输出数量在Unix中筛选
想知道如何输出线在一个文本文件的数量屏幕,然后将其存储在一个变量中。 我有一个名为stats.txt文件,当我运行wc -l stats.txt
它输出8 stats.txt
我试图做x = wc -l stats.txt
以为它只会存储数量,剩下的只是视觉,但它不工作:(
感谢您的帮助
,你可以尝试:
x=`cat stats.txt | wc -l`
或(从another.anon.coward的评论):
x=`wc -l < stats.txt`
你可以不用'cat'&pipe来做'x = $(wc -l <stats .txt)' –
@gokcehan当我跑了它---- cat coursefile.txt | wc -l -----它工作。但是,当我试图存储它时,我得到了一个错误:-bash:x:命令未找到 – Masterminder
不要忘记反引号('') – none
有做这个两个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")"
希望这有助于=)
感谢您的帮助 – Masterminder
不需要'猫'或任何重定向/管道 - 只需要:x = $(wc -l /path/to/file.txt) –
'x = $(wc -l <stats.txt)''? –
一个bash教程可以帮助你:http://tldp.org/LDP/Bash-Beginners-Guide/html/ –