我编写了一个脚本,我希望在脚本中包含一个函数,该函数将控制台输出静默地记录到.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来查找和替换,因为这看起来很乏味。
感谢。
答案 0 :(得分:0)
您可以使用>
字符指示输出。 printf "mytext" > out.txt
会将“mytext”打印到文件“out.txt”