我从ksh脚本运行inventury.expect(expect脚本),
我将标准输出和标准错误传输到日志文件-/tmp/VM.log
到现在为止一切都好

  #!/bin/ksh

  .
  .
  .

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


  .
  .
  .

但是当我查看日志文件时,我发现有控制权M(^M)的分配
因此,我添加tr命令如下,以便从standard out/err中删除^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??

最佳答案

使用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

关于linux - 如何从标准输出和标准错误中删除^ M,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24673321/

10-12 01:28
查看更多