Operating System - HP-UX
1830237 Members
13472 Online
109999 Solutions
New Discussion

Re: Script help....expr command

 
dev44
Regular Advisor

Script help....expr command

I want to be able to print the disk space usage out from a script. The following is my script:

#!/usr/bin/sh
#
#echo "Which volume group? \c"
#read ANS

HOMEDIR=/home/smid/scripts
BDFMEGS=$HOMEDIR/bdfm
if [ ! -x $BDFMEGS ]
then
echo "ERROR: $BDFMEGS does not exist!"
exit 1
fi

SUM=0

# Cut out the first line from output
for i in `/usr/local/bin/sudo strings /etc/lvmtab |grep dev|grep -v dsk|grep -v vg00`; do
var=`$BDFMEGS|grep $i | grep -v : |awk '{print $3}'`
SUM=`expr $SUM + $var`
echo "`hostname`: $i Total Space Used (MB) = $SUM"
done


I am almost there but the expr is not working out. Here is what I get for the output when using set -x:

$ ./disk_used.sh
+ HOMEDIR=/home/smid/scripts
+ BDFMEGS=/home/smid/scripts/bdfm
+ [ ! -x /home/smid/scripts/bdfm ]
+ SUM=0
+ /usr/local/bin/sudo strings /etc/lvmtab
+ grep dev
+ grep -v vg00
+ grep -v dsk
+ + /home/smid/scripts/bdfm
+ grep /dev/vgvnadmin
+ grep -v :
+ awk {print $3}
var=5886
394
332
7382
6854
9099
29
+ + expr 0 + 5886 394 332 7382 6854 9099 29
expr: Syntax error

So it isn't using +'s between each $var.

Thanks for the help,
S
whatever
4 REPLIES 4
johnsonpk
Honored Contributor

Re: Script help....expr command

Hello,

Try this instead

>>SUM=`expr $SUM + $var`

SUM= $((SUM + var))

Rgds
Johnson
dev44
Regular Advisor

Re: Script help....expr command

Figured it out. Thanks.
whatever
James R. Ferguson
Acclaimed Contributor

Re: Script help....expr command

Hi:

The syntax of the 'expr' statement is OK. Your trace suggests that your 'var' variable isn't a simple integer but some string of integers. Consider:

# cat ./mybad
#!/usr/bin/sh
set -x
SUM=0
for var in "1 2 3 4 5"
do
SUM=`expr $SUM + $var`
echo $SUM
done

# ./mybad
+ SUM=0
+ + expr 0 + 1 2 3 4 5
expr: Syntax error

SUM=
+ echo

Regards!

...JRF...
Dennis Handly
Acclaimed Contributor

Re: Script help....expr command

You may want to toss expr(1) unless you are using it for substrings.
This: SUM=`expr $SUM + $var`
can be done as: (( SUM += var ))