I have the following shell script which runs a SQL query and a command which sends the output as an email. The issue is I am able to send only the SQL output. Not the output of the for loop. I tried to give the "EOF" after the for loop but then it gives a syntax error. Please let me know how to send both the output in an email.
Thanks & Regards, Akhil
#!/bin/bash
source $HOME/.bash_profile
cd /home/cron
wfVAR="red blue green"
echo " " > /home/cron/output.lst
sqlplus -s user/test@DB <<EOF
set linesize 55 pages 500
spool output_temp.lst;
set head off;
select sysdate from dual;
set head on;
spool off;
EOF
for name in ${wfVAR}; do
pmcmd getworkflowdetails -sv REPOSITORY ${name} | grep -e "Workflow:" -e "Workflow run status:" -e "End time:"
done
sed -e 's/ *$//' output_temp.lst > output.lst
cat /home/cron/output.lst | mail -s "Output - `date '+%d-%m-%y'`" [email protected]
rm output_temp.lst
You are overwriting the file.
Now,
output.lst
only containsbar
.The trick is to append, instead of overwrite.
Your script has multiple additional problems, so it is not really clear what you actually want it to do. I'm guessing something like this.
... which coincidentally could also be done with a single redirection if you wanted to, by running the commands in a subshell, and redirecting output from the subshell:
With these speculations, your entire script could be
Even the permanent output file could be avoided if you like; just pipe to
mail
.(... assuming your
sed
understands\|
to mean alternation in a regex).