打印所有环境变量的列表

Ale*_*ack 7 lua

我想打印所有环境变量及其值的列表.我搜索了Stackoverflow,以下问题接近但不回答我:

与C不同,Lua没有envp**传递给的参数,main()所以我找不到获取所有环境变量列表的方法.有谁知道如何获取所有环境变量的名称和值列表

Nic*_*las 5

标准Lua函数基于C标准函数,并且没有C标准函数来获取所有环境变量.因此,也没有Lua标准功能.

您将不得不使用像luaex这样的模块,它提供此功能.

  • @AlexStack:不太好.`argv`是指传递给程序的命令行参数.`envp`指的是环境变量,但它是非标准的. (4认同)

lhf*_*lhf 2

此代码是从旧的 POSIX 绑定中提取的。

static int Pgetenv(lua_State *L)        /** getenv([name]) */
{
    if (lua_isnone(L, 1))
    {
        extern char **environ;
        char **e;
        if (*environ==NULL) lua_pushnil(L); else lua_newtable(L);
        for (e=environ; *e!=NULL; e++)
        {
            char *s=*e;
            char *eq=strchr(s, '=');
            if (eq==NULL)       /* will this ever happen? */
            {
                lua_pushstring(L,s);
                lua_pushboolean(L,0);
            }
            else
            {
                lua_pushlstring(L,s,eq-s);
                lua_pushstring(L,eq+1);
            }
            lua_settable(L,-3);
        }
    }
    else
        lua_pushstring(L, getenv(luaL_checkstring(L, 1)));
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

  • @AlexStack,正如 Nicol 提到的,没有纯 Lua 函数,因为 `environ` 不是 ANSI C,只是 POSIX。 (2认同)