ksh unix中的文件行数

时间:2015-10-28 12:17:33

标签: unix ksh

我试图在ksh脚本中从下面的文件中获取行数。但它什么也没有回报:

filerecordcount= $((`wc -l <../data/act.dat`))

我也试过这些:

    filerecordcount= `wc -l <../data/act.dat`

    filerecordcount= $(wc -l <../data/act.dat)

当我打印变量时,它不会在变量中打印该值。

print "Record Count in .dat file : $filerecordcount." 1>&2;

但是当我在命令提示符下尝试相同时,它返回计数

wc -l<../data/act.dat

2 个答案:

答案 0 :(得分:2)

你不必在分配部分后给出空格。使用下面的一个。它会工作正常。但是不要忘记打印变量filerecordcount。

更新:

filerecordcount = $((``wc -l&lt; ../ data / act.dat`))

答案 1 :(得分:1)

简化简化。您的反引号正在执行命令扩展,它们的输出由$((...))作为算术表达式处理。这有点多余。

filerecordcount=$(wc -l < ../data/act.dat)

=之后没有空格,只有一级命令扩展。

或者,您可以使用流程替换:

read filerecordcount < <(wc -l < ../data/act.dat)

或者您甚至可以在没有子shell的情况下使用循环执行此操作:

filerecordcount=0
while read junk; do ((filerecordcount++)); done < ../data/act.dat