#!/bin/bash
cd /pg
file=`ls -l |awk '{print $9}'`
list=()
for i in $file
do
echo $i
a=`cat /pg/$i | head -n 1 |awk '{print $8}'`
b=`cat /pg/$i | head -n 2 |awk '{print $8}'`
#a1=`echo "$a" | tr -d '"'`
#b1=`echo "$b" | tr -d '"'`
echo $a
echo $b
c="$(($a+$b))"
list=($c)
#a1=`cat /pg/$i | head -n 2 |awk '{print $8}'`
done
在执行上述代码时,我收到以下错误,请帮助我解决问题输出值是但仍然无法同时添加两者a=30
。b=30
/bin/max_timetrack.sh: line 16: 30+30
30: syntax error in expression (error token is "30")
你的错误是在这一行:
head
不会给你第二行,而是第一行。实际上将是:
b
而不是
30
你说的。因此错误,您将需要(同时保持复杂的结构):
然而!
您的小脚本中有很多无用/奇怪的用途:
这已经足够了:
请注意使用
$(...)
代替 反引号,这是相同的,但最好是。与此行相同
最好是
无论如何,你只能在里面做算术
awk
:你也在parsing
ls
,这是一个糟糕的选择:你不能这样做吗?
根据您要执行的操作
c
,您可能可以将整个脚本编写为一个awk
命令。