0

我在 Linux 中编写了一个 C 程序来使用 设置环境变量的值setenv,但我无法为数组变量设置值(我将数组的值打印到输出文件,但文件的内容为空白),但非数组变量工作正常。这是代码片段:

setenv("header", "Welcome: ", 1);             // work fine, can output to file
setenv("info[0]", "192.168.1.1: ", 1);        // nothing are shown in output file
setenv("info[1]", "AA-AA-AA-BB-BB-BB: ", 1);  // nothing are shown in output file

我找不到它不起作用的任何原因:(感谢任何帮助。

4

1 回答 1

1

数组由 bash 处理,它们不作为环境变量存在。环境变量以 VARNAME=value 的形式存储在每个进程的内核中,您可以检查以下内容:

$ cat /proc/$$/environ | tr '\0' '\n'

但是您可以使用带分隔符的字符串形式的数组(逗号或制表符或其他):

信息=192.168.1.1:,AA-AA-AA-BB-BB-BB:

并以适当的方式处理此字符串

你也应该小心它的名字。首先对名称的组成有具体要求

IEEE Std 1003.1-2001 的 Shell 和 Utilities 卷中的实用程序使用的环境变量名称仅由大写字母、数字和来自 Portable Character Set 中定义的字符的“_”(下划线)组成,并且不以数字开头. 实现可能允许其他字符;应用程序应容忍此类名称的存在。

要注意的第二件事是,您冒着修改程序其他组件所依赖的某些变量的风险。

于 2013-10-22T08:54:38.103 回答