来自脚本(bash)的乱码输出

时间:2017-05-01 09:06:05

标签: linux bash

我今天在我的一个脚本中发现了一个奇怪的错误。 首先是一些背景。脚本顺序运行一堆命令并创建一个HTML模板,然后发送。现在这个特殊的模板被扰乱了,我无法理解为什么。这是一个样本:

//错误。看到第二行被剪切。字符串应为"受影响的CI序列号"。此外,电子邮件应以&#34开头;亲爱的团队&# 34;并且它不在应该的位置。

Affected CI Name: <name>

cted CI Serial Number: <SN> 

Dear Team, 

在脚本中我没有在后台运行某些内容。所有内容都应按顺序运行:

echo "<b>" Affected CI Name: "</b>" $(grep $sn $FPATH/arraylist.txt|awk '{print $2}')"<br>" >> $FPATH/mail
echo "<b>" Affected CI Serial Number: "</b>" $(grep $sn $FPATH/arraylist.txt|awk '{print $1}') "<br>" >> $FPATH/mail

我认为这个问题不会再现。我的问题是这样的事情怎么可能发生?到目前为止一切都正常运行。我错过了关于输出重定向的一些内容?据我所知,每个命令都应等待前一个返回代码,然后继续下一个。

// Linux版

2.6.26-2-amd64#1 SMP Sun Mar 4 21:48:06 UTC 2012 x86_64 GNU / Linux

1 个答案:

答案 0 :(得分:1)

试试看它是否有帮助:

execute_commands()
{
echo "<b>" Affected CI Name: "</b>" $(grep $sn $FPATH/arraylist.txt|awk '{print $2}')"<br>" 
echo "<b>" Affected CI Serial Number: "</b>" $(grep $sn $FPATH/arraylist.txt|awk '{print $1}') "<br>"
}

execute_commands >> $FPATH/mail

我已经复制/粘贴了你的命令,假设它们有效。不同之处在于只需一次重定向即可处理所有内容,希望这可以避免任何可能影响您所看到的行为的缓冲问题。