2013-07-25 58 views
0

我想从Linux中程序的输出未运行时输出(工作)命令,我把它变成sh文件:的Linux:在.SH脚本

wine Blockland.exe ptlaaxobimwroe -dedicated -port 30100 > consoleLog.txt 

它执行该程序,但创建了一个空白文件。 此命令在直接在终端窗口中执行时始终有效。那么为什么不在.sh脚本中将输出打印到文件中呢?

+0

您正在运行一个DOS控制台应用程序,这并不一定写到标准输出或标准错误,但它写入“控制台”。捕捉“控制台”输出几乎是不可能的。我见过的唯一能够捕获控制台输出的工具是Don Libes的“期望”,而且这种工具可以做各种各样的黑客攻击。 –

+0

或尝试在'脚本'会话中执行。 – tripleee

回答

1

可能是因为它将其输出打印到stderr流而不是stdout。尝试将2>&1附加到命令末尾(在consoleLog.txt之后),或者仅使用&>而不是>

0

重定向以exec标准输出:

#!/bin/sh 
#Example script 
exec > consoleLog.txt 
wine Blockland.exe ptlaaxobimwroe -dedicated -port 30100 
+0

这将创建一个文本编辑器无法打开的空白文件。 – hammereditor