tester
tester

Reputation: 223

execute mailx using shell script

I am trying to run the below script.

val = `wc -l /home/validate.bad | awk '{print $1}' | tail -n1`
valCount = `wc -l /home/validation.txt | awk '{print $1}'`
if [ "$val" -gt 1 ] && ["$valCount" -gt 1]
then
    mailx -s "Validation failed" -r [email protected] [email protected]<<-EOF
Hi ,
Validation has failed. Please check.
EOF
elif [ "$valCount" -gt 1 ]
then
    mailx -s "Validation pass" -r [email protected] [email protected]<<-EOF
Hi Team,
Validation success.
EOF
fi

But I am getting this error.

Error:
val: comand not found
valCount: command not found
line 3[: : integer expression expected

Upvotes: 0

Views: 350

Answers (1)

sjsam
sjsam

Reputation: 21955

You can't have spaces around = :

val = `wc -l /home/validate.bad | awk '{print $1}' | t` # wrong

and should have been

val=`wc -l /home/validate.bad | awk '{print $1}' | t`

or preferrably

val=$(wc -l </home/validate.bad) 
#`..` is legacy , $() supports nesting, one good reason to go for it
# You use awk and tail uselessly 

Also

["$valCount" -gt 1]

should have been

[ "$valCount" -gt 1 ] # mind the spaces for the test constructie
# [spaceSTUFFspace] is the correct form

Sidenote

You may use [ shellcheck ] to check your scripts.

Upvotes: 1

Related Questions