我从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/