在字符串中回显像cat这样的变量

时间:2014-11-06 06:21:11

标签: bash

我有一个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

我想要的是今天和昨天的小桌子打印出来并通过电子邮件发送给我,以便我可以在早上看到它。 我想把桌子赶走。 _但我不想使用各种回声 - 就像你知道回应每一行。 〜

2 个答案:

答案 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