我有一些带数字的文本文件(结构如下)。我想把每一行从一个文件加上其他文件(文件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/