行计数在Unix中未按预期工作

行计数在Unix中未按预期工作,unix,Unix,我正在尝试将行计数设置为一个变量。源文件filename.dat包含两行记录,如下所示: 112233;778899 445566 脚本1 line_cnt=$(more /home/filename.dat | wc -l) echo $line_cnt 当我运行这个脚本时,我得到2的输出。现在,我有一个修改版本: 脚本2 filename=/home/filename.dat line_cnt=$(more ${filename} | wc -l) echo $line_cnt 输入文件

我正在尝试将行计数设置为一个变量。源文件filename.dat包含两行记录,如下所示:

112233;778899

445566

脚本1

line_cnt=$(more /home/filename.dat | wc -l)
echo $line_cnt
当我运行这个脚本时,我得到2的输出。现在,我有一个修改版本:

脚本2

filename=/home/filename.dat
line_cnt=$(more ${filename} | wc -l)
echo $line_cnt
输入文件具有相同的记录。但这给了我5的输出,尽管它只有2条记录

有人能告诉我怎么了吗

编辑-更正了第二个脚本中的文件路径

line_cnt=`cat ${filename} | wc -l`

cat${filename}|wc-l应该在反引号中。

为什么不在脚本2中使用filename=/home/filename.dat?使用寻呼机根本不是一个好主意<代码>$(wc-l您的_文件)就足够了。对于您的问题:在第二个示例中,您没有指定完整路径。您不是简单地
wc
ing错误的文件吗?为了澄清,在第二个脚本中,变量filename=/home/filename。dat@Mat公平地说,使用寻呼机将获得正确的结果,并产生不同的输出(寻呼机将只给出
n
,直接的wc-l将给出
n filename.dat
)。@Mat,wc-l/home/filename.dat提供计数和文件名。