将shell的输出重定向到txt文件

时间:2017-05-15 21:36:37

标签: shell

我编写了一个脚本,我希望在脚本中包含一个函数,该函数将控制台输出静默地记录到.txt文件中。我的shell脚本中使用的printf具有某些字符的颜色。

样本:

# Color block

G="\033[32m"
N="\033[0m"
R="\033[31m"
Y="\033[33m"

# MCS Check

mcs=$(cat /home/admin/service-health.txt | grep -i mcs | cut -d ' ' -f 5 | tr . " ")

if [ "$mcs" == "up " ]
then
        printf "${Y}MCS${N} Service Status is\t\t |${G}UP${N}\n"
else
        printf "${Y}MCS${N} Service Status is\t\t |${R}DOWN${N}\n"
fi

此控制台输出将显示颜色。 这在.txt日志记录中不是必需的。

然后我将使用以下方式将此.txt通过电子邮件发送到地址:

sendmail $vdp $eaddr  < /home/admin/health-check.txt

我使用了这个块,因为我想在脚本本身中重定向输出:

sudo touch /home/admin/health-check.txt
exec > >(tee -i /home/admin/health-check.txt)
exec 2>&1

但由于这是一个彩色输出,我会在我的电子邮件中继续这样做:

[33mGSAN[0m Service Status is          |[32mUP[0m
[33mMCS[0m Service Status is           |[32mUP[0m
[33mTomcat[0m Service Status is        |[32mUP[0m
[33mScheduler[0m Service Status is     |[32mUP[0m
[33mMaintenance[0m Service Status is   |[32mUP[0m
VDP [33mAccess State[0m is             |[32mFULL[0m

关于重定向期间剥离颜色的任何想法?我不想使用sed来查找和替换,因为这看起来很乏味。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用>字符指示输出。 printf "mytext" > out.txt会将“mytext”打印到文件“out.txt”