我在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
我找不到任何不合理的理由:(感谢任何帮助。
答案 0 :(得分:1)
数组由bash处理,它们不作为环境变量存在。环境变量作为VARNAME = value存储在每个进程的内核中,您可以检查:
$ cat /proc/$$/environ | tr '\0' '\n'
但是您可以使用带分隔符的字符串形式的数组(逗号或制表符号或其他):
信息= 192.168.1.1:,AA-AA-AA-BB-BB-BB:
并以适当的方式处理此字符串
另外你应该小心它的名字。首先,specific requirements关于如何组成名称:
Shell中的实用程序使用的环境变量名称 IEEE Std 1003.1-2001的实用程序卷仅由大写字母组成 字母,数字和定义的字符的'_'(下划线) 在便携式字符集中,不要以数字开头。其他 实施可以允许使用字符;申请书 容忍这些名字的存在。
要注意的第二件事是你有可能修改一些其他程序组件所依赖的变量。