我一直试图像这样修改Terraria服务器的标准输出:
(([ -p ".pipe" ] || mkfifo .pipe) && (mono tModLoaderServer.exe -savedirectory ~/ -tmlsavedirectory ~/saves -modpath ~/mods < .pipe | sed 's/):/):\n/' &) && read > .pipe && rm .pipe)
应该做的是在以):
结尾的行的末尾添加换行符
服务器正常启动,但是当我尝试发送命令时,服务器一遍又一遍地重复主菜单,以空白行分隔:
Choose World: Terraria Server v1.3.5.2 - tModLoader v0.10.1.5
1 world1
n New World
d <number>Delete World
m Mods Menu
b Mod Browser
[...]
这与我只是一次又一次地向控制台发送换行符的行为相同。 我怀疑“读取”会读取发布到shell stdin的任何内容,因此它基本上会将服务器stdout输送到其stdin中。
我找不到与我的问题有关的任何内容,也无法提出任何建议。我也愿意寻求完全不同的解决方案。