Lua popen()是否在结果末尾添加换行符(\n)?

Lua popen()是否在结果末尾添加换行符(\n)?,lua,Lua,我编写了一个小函数,返回执行命令的结果 function axsh(cmd) local fullCmd=cmd:lower() local f,err=io.popen(fullCmd,"r") if not f then return nil,"Could not create the process '"..fullCmd.."' \nError:"..err end return f:read("*all") end s=axsh

我编写了一个小函数,返回执行命令的结果

function axsh(cmd)
    local fullCmd=cmd:lower()
    local f,err=io.popen(fullCmd,"r")
    if not f then
        return nil,"Could not create the process '"..fullCmd.."' \nError:"..err
    end
    return f:read("*all")
end

s=axsh("echo hi")
--print all bytes
print(s:byte(1,s:len()))
无论命令是什么,输出的结尾总是有一个\n:

104 105 10
编辑:它不仅适用于我自己的二进制命令行应用程序,而且适用于几乎所有的操作系统命令:Windows:“dir”、“ipconfig”、“echo”。。。Linux:“ls”,“pwd”,“ls”

但是,当我单独运行命令时(即windows命令提示符),没有尾随换行。我不需要它,所以需要在返回结果之前删除最后一个字符


问题:popen()的结果中是否始终存在此换行符?我在文档中找不到任何有关此行为的引用。

否。
io.popen
只返回命令生成的任何字符串。您可以使用
echo
作为命令,该命令恰好在字符串后面添加了一个换行符(这使命令提示符显示在下一行,而不是仅显示在输出之后)

您可以使用以下方法进行测试:

s=axsh([[lua -e "io.write([=[hi]=])"]])
return string.byte(s,1,-1)
它不会以换行符结束输出