Lua io.popen():lines()忽略第一个非空行
我有一个shell脚本,其输出如下:Lua io.popen():lines()忽略第一个非空行,lua,popen,Lua,Popen,我有一个shell脚本,其输出如下: 1 Space Cruise (Title) Ben Prunty Music FTL 46.4 mymplayer = { track="", title="", artist="", album="", time="" } <empty line> Space Cruise (Title) Ben Prunty Music FTL 46.4 现在我想将这些线映射到如下数组: 1 Space Cruise (Title) Ben Prun
1
Space Cruise (Title)
Ben Prunty Music
FTL
46.4
mymplayer = { track="", title="", artist="", album="", time="" }
<empty line>
Space Cruise (Title)
Ben Prunty Music
FTL
46.4
现在我想将这些线映射到如下数组:
1
Space Cruise (Title)
Ben Prunty Music
FTL
46.4
mymplayer = { track="", title="", artist="", album="", time="" }
<empty line>
Space Cruise (Title)
Ben Prunty Music
FTL
46.4
因此,我使用io.popen()如下(用于测试目的):
问题在于,它具有以下输出:
Space Cruise (Title)
Ben Prunty Music
FTL
46.4
现在,如果我让脚本的输出以换行符开始,输出如下:
1
Space Cruise (Title)
Ben Prunty Music
FTL
46.4
mymplayer = { track="", title="", artist="", album="", time="" }
<empty line>
Space Cruise (Title)
Ben Prunty Music
FTL
46.4
太空巡航(标题)
本·普朗蒂音乐
超光速
46.4
我做错了什么?可能是
mplayerout.sh
的第一行输出以回车(“\r”
)结束,而其他输出以换行(“\n”
或“\r\n”
)结束
然后初始的“1”
仍将在输出中,但“\r”
将导致终端用以下字符覆盖它
您可以使用print(string.format(“%q”,l))
看到这一点。如果第一行中嵌入了“\r”
,则输出将为:
"1\rSpace Cruise (Title)"
"Ben Prunty Music"
"FTL"
"46.4"
好吧,我发现了问题。在Python中执行同样的操作时,我得到了第一行,但是是3281个空字节(
'\x00'
),后跟'\x02\n'
看起来问题出在脚本中