在unixshell脚本中运行total

在unixshell脚本中运行total,shell,unix,Shell,Unix,我试图编写的unixshell脚本中存在一些问题,该脚本使命令行中的多个文件中的行总数保持运行。我可以单独计算行数,并在循环的每一次运行中显示它们,但我的lines变量在末尾总是读取0 #! /bin/sh lines=0 line_count(){ #count the lines l= blablabla..... lines=`lines + l` } for f in "$@" do echo "total lines:" ( line_count "$f"

我试图编写的unixshell脚本中存在一些问题,该脚本使命令行中的多个文件中的行总数保持运行。我可以单独计算行数,并在循环的每一次运行中显示它们,但我的lines变量在末尾总是读取0

#! /bin/sh
lines=0

line_count(){
    #count the lines
    l= blablabla.....
    lines=`lines + l`
}

for f in "$@"
do
echo "total lines:"
( line_count "$f" )
done

如果在子shell中运行某些内容,则所做的任何变量更改(例如,增加
$line
)仅在该子shell中有效,并且在子shell退出时丢失。但是,因为您使用的是一个函数,所以根本不需要子shell,只需调用该函数即可

另外,
lines=`lines+l`
将尝试使用参数
+
l
执行命令
lines
,我认为这不是您想要的。要计算表达式的结果,请使用
$(…)
语法,并在变量前面添加
$
,以处理其值

最后,如果从不使用
$lines
的值,则可能需要在调用函数后打印它

#/垃圾箱/垃圾箱
直线=0
行计数(){
#数数队伍
l=blablabla。。。。。
行=$($行+l))
}
对于“$@”中的f
做
行计数“$f”
echo“总行数:$line”
完成

wc-l文件有什么问题吗?你只需要
sh
或者你没有访问
wc
,那么
grep-c.*.
我有我想要的脚本,我只是不明白整个子外壳的事情,我认为这是我的计数器没有像它应该的那样保持跟踪的原因。如果只是将运行总数保存到一个文件中,然后在需要时从中获取值,这会是不好的吗?这是一种糟糕的做法吗?@jimjohnjim,可以这样做,但将数据保存在内存中会更有效,特别是在这样的情况下,存储一个数字。对于更复杂的任务,可能需要或有助于将部分结果写入文件以供以后使用。