如何使用setenv为bash数组设置值

时间:2013-10-22 08:49:02

标签: c linux bash

我在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

我找不到任何不合理的理由:(感谢任何帮助。

1 个答案:

答案 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的实用程序卷仅由大写字母组成   字母,数字和定义的字符的'_'(下划线)   在便携式字符集中,不要以数字开头。其他   实施可以允许使用字符;申请书   容忍这些名字的存在。

要注意的第二件事是你有可能修改一些其他程序组件所依赖的变量。