0

This is working ok from command line:

sed -n -e '/^2014-06-17/,/^2014-06-18/p' /var/log/tomcat7/catalina.out |         grep -i '===============================\|ACTION URL=\|user-agent=\|RemoteAddr=\|exception\|at \|caused by' |         mail mymail@mydomain.com -s "[mydomain.com.crons] logsWatch - tomcat7/catalina.out - 06-17"

but when I execute it inside a .sh sends me an empty body message.

Full code:

#!/bin/bash

year=`date --date='1 days ago' +%Y`
monthName=`date --date='1 days ago' +%b`
month=`date --date='1 days ago' +%m`
day=`date --date='1 days ago' +%_d`
today=`date +%_d`
hour=`date --date='1 hour ago' +%H`

echo "logsWatch - catalina.out - ${month}-${day}"
echo "logsWatch - catalina.out - ${month}-${day}" > logsWatch.txt
echo "========================" >> logsWatch.txt
echo "===============================\|ACTION URL=\|user-agent=\|RemoteAddr=\|exception\|at \|caused by" >> logsWatch.txt
echo "" >> logsWatch.txt
echo "sed -n -e '/^${year}-${month}-${day}/,/^${year}-${month}-${today}/p' /var/log/tomcat7/catalina.out | \
        grep -i '===============================\|ACTION URL=\|user-agent=\|RemoteAddr=\|exception\|at \|caused by' | \
        mail mymail@mydomain.com -s \"[mydomain.com.crons] logsWatch - tomcat7/catalina.out - ${month}-${day}\""

sed -n -e '/^${year}-${month}-${day}/,/^${year}-${month}-${today}/p' /var/log/tomcat7/catalina.out | \
        grep -i '===============================\|ACTION URL=\|user-agent=\|RemoteAddr=\|exception\|at \|caused by' | \
        mail mymail@mydomain.com -s "[mydomain.com.crons] logsWatch - tomcat7/catalina.out - ${month}-${day}"
surfealokesea
  • 4,971
  • 4
  • 28
  • 38
  • 1
    instead of using backticks , use `$()`. Don't use one-liners in a shell-script, its messy and error-prone. Split each tesk into smaller parts. – Fredrik Pihl Jun 18 '14 at 07:16
  • Your date manipulations will fail when yesterday has a different month (or year!) than today. – tripleee Jun 18 '14 at 07:21
  • 1
    your main problem is that you use single-quotes, i.e. `'` which prevents variable from being expanded by the shell. See link provided by the mighty triplee for more information – Fredrik Pihl Jun 18 '14 at 07:24
  • 101 of debugging: `echo`. example: `echo '/^${year}-${month}-${day}/,/^${year}-${month}-${today}/p'` – Karoly Horvath Jun 18 '14 at 09:09

0 Answers0