我有一个sql语句,会产生一个小的值表。 我每天都要看它,可以将它与昨天进行比较。 我厌倦了这样做。
/big/database/v10.2.0.2.0-32bit/bin/sqlplus -S casper/secret@wowmomdb2 @/home/casper/installed.sql
所以我做了一个小剧本。
#!/bin/bash
set -x
dayofweek=$(/bin/date +%w)
today=$(/bin/date +%Y%m%d)
if [ $dayofweek == 1 ] ; then
yesterday=$(/bin/date -d "3 days ago" +%Y%m%d)
else
yesterday=$(/bin/date -d "1 day ago" +%Y%m%d)
fi
invoke="/big/database/v10.2.0.2.0-32bit/bin/sqlplus -S "
login="casper/secret@wowmomdb2 "
filter="@/home/casper/installed.sql"
installed="/home/casper/_symbols"
table="$invoke $login $filter"
$table > $installed.$today
echo "Installed Today --------
$installed.$today
Installed Yesterday --------
$installed.$yesterday " | mail -s "diff exchange installed" casper@big_bank.com
#/big/database/v10.2.0.2.0-32bit/bin/sqlplus -S casper/secret@wowmomdb2 @/home/casper/installed.sql > /tmp/check_c4_exchange.$today
问题是我想要邮寄给我。
Installed Today--------
/home/casper/_symbols.20141104
Installed Yesterday----
/home/casper/_symbols.20141105
我想要的是今天和昨天的小桌子打印出来并通过电子邮件发送给我,以便我可以在早上看到它。 我想把桌子赶走。 _但我不想使用各种回声 - 就像你知道回应每一行。 〜
答案 0 :(得分:1)
问题是$installed.$today
是文件的名称。您想要文件的内容。尝试:
echo "Installed Today --------
$(cat $installed.$today)
Installed Yesterday --------
$(cat $installed.$yesterday) "
如果您使用bash
,则无需使用cat
:
echo "Installed Today --------
$(<$installed.$today)
Installed Yesterday --------
$(<$installed.$yesterday) "
这种方法避免了生成运行cat
的子shell的需要,从而提高了效率。
答案 1 :(得分:0)
您可以使用mutt
代替mail
来附加文件(您的系统上也可以使用其他程序):
echo "..." | mutt -s "diff exchange installed" \
-a $installed.$today -a $installed.$yesterday casper@big_bank.com