2014-07-10 129 views
0

我删除^ M运行inventury.expect(expect脚本)从KSH脚本,如何从标准输出和标准错误

,我传输标准输出和标准错误日志文件 -/tmp目录/VM.log

直到现在埃夫里的事情是确定的

#!/bin/ksh 

    . 
    . 
    . 

    /var/tmp/inventury.expect 1>> /tmp/VM.log 2>> >>/tmp/VM.log 


    . 
    . 
    . 

,但是当我在日志文件中望去,我看到有配发的控制M(^ M)

所以我添加了TR命令,以便从删除^ M以下的标准输出/犯错

/var/tmp/inventury.expect 1>> | tr -d "^M" /tmp/VM.log 2>> | tr -d "^M" >>/tmp/VM.log 

,但似乎这并不违法

我得到:(当我跑我的KSH脚本)

syntax error near unexpected token `|' , when I run the ksh script 

请教我们如何从标准输出和标准错误中删除^ M?

回答

1

您使用tr是正确的想法,但要删除的字符将不会用^M指定。这些控制字符表示的是回车符,您在shell中使用\r指定。因此,与更换您的tr -d "^M"用途:

tr -d '\r' 

把那之后expect脚本,重定向输出从tr到文件:

/tmp/inventury.expect | tr -d '\r' 1>> /tmp/VM.log 2>> /tmp/VM.log 
+0

所以我需要在管道后添加tr -d'/ r'? – maihabunash

+0

as - > /var/tmp/inventury.expect 1 >> | tr -d'\ r'??? – maihabunash

+0

我得到同样的错误,也许管道线是问题? – maihabunash

0

我设定的语法

/var/tmp/inventury.expect | tr -d '\r' 1>> /tmp/VM.log 2>> /tmp/VM.log 

这解决了^ M

+0

迈克尔J.巴伯关于^ M的评论 – maihabunash

相关问题