如果我运行
echo "set x 2 | tclsh > output.txt
,输出文件为空。但是运行 tclsh > output.txt
并在控制台中输入 set x 2
可以使其工作。
我的猜测是 tclsh 看到我正在使用输入重定向(因此会话不是交互式的),并且不会费心将返回值发送到 stdout。有什么想法让它打印出来吗?
命令结果的打印严格来说是
tclsh
(和wish
)交互模式的一个功能,并且不正式被视为语言功能。 Tclsh 通过查看输入是否来自终端来确定,并相应地将 tcl_interactive
设置为布尔值。管道不是终端或控制台。
通常的建议是,如果您想要打印某些内容,请明确并自己打印:
echo 'puts [set x 2]` | tclsh >output.txt
如果您的脚本足够长,以至于您正在考虑 heredoc,请将其放入自己的文件中。这样就容易多了。