Score:0

How to add two integer values in Linux?

cn flag
#!/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

While executing the above code i'm getting the below error please help me to fix the issue output of the values is a=30 and b=30 but still not able to add both.

/bin/max_timetrack.sh: line 16: 30+30
30: syntax error in expression (error token is "30")
Score:5
in flag

You're error is in this line:

b=`cat /pg/$i | head  -n  2 |awk '{print $8}'`

head won't give you the second line, but the n first lines.
So b will actually be:

30
30

and not 30 how you said. Hence the error,

30+30
30

You would need (while keeping your complicated structure):

b=`cat /pg/$i | head  -n  2 |awk '{print $8}' | tail -n 1`

However!

There is a lot of useless/strange use of things in your little script:

This would be enough:

b=$(awk 'NR==2{print $8}' "/pg/$i")

Note the use of $(...) instead of backticks, which is the same but to be preferred.

Same with this line

a=`cat /pg/$i | head  -n  1 |awk '{print $8}'`

would better be

a=$(awk 'NR==1{print $8}' "/pg/$i")

Anyways, you can do the arithmetic inside awk only:

c=$(awk 'NR<=2{sum+=$8}END{print sum}')

Also you're parsing ls, which is a bad choice:

file=`ls -l | awk '{print $9}'`

Can't you just do this?

for i in *; do ... done

Depending on what you want to do with c, you can probably write the whole script as one awk command.

hariraj avatar
cn flag
Thanks Mr.PLumo the above answer is working for me.
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.