我有一些带数字的文本文件(结构如下)。我想把每一行从一个文件加上其他文件(文件1的第1行+文件2的第1行等)。我已经按如下方式编写了bash脚本,但这给了我expr error

function countHourly () {


for i in {1..24}
    do
        for file in $PLACE/*.dailycount.txt
            do
            SECBUFF=`head -n $i $file`
             VAL=`expr $VAL + $SECBUFF` ## <-- this cause expr error

        done
      echo line $i form all files counts: $VAL
done

}

文件结构*.dailycount.txt:
10145645034523239(新行中的每个数字)。

最佳答案

head -n NUMBER FILE命令输出第一行数字。这意味着SECBUFF在循环的第二次运行时会变成1 0,而像expr 1 + 2 3这样的表达式是无效的,因此您会从expr中得到一个错误。
您可以使用sed只从文件中选择第n行,但我想知道您是否不应该以某种方式重新构造程序。

        SECBUFF=`sed -ne ${i}p $file`

关于linux - Bash expr错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18748077/

10-13 02:50