alf*_*red 10 c linux environment-variables
我有一个字符串存储在一个被读入字符串的文件中.我希望将*nix shell格式中定义的变量替换为相应的环境值.
例如,环境变量$DEPLOY=/home/user
将"deploypath=$DEPLOY/dir1"
变为"deploypath=/home/user/dir1"
有一个简单的库可以做到这一点吗?
即
#include "supersimplelib.h"
char *newstr = expandvars(oldstr);
Run Code Online (Sandbox Code Playgroud)
(或类似的)
我明白我可以使用正则表达式lib然后调用,getenv()
但我想知道是否还有另一种更简单的方法?
它只能在Linux下编译.
wordexp似乎做你需要的.以下是此联机帮助页中的示例程序的修改版本(它还提供了很多关于wordexp的详细信息).
#include <stdio.h>
#include <wordexp.h>
int main(int argc, char **argv) {
wordexp_t p;
char **w;
int i;
wordexp("This is my path: $PATH", &p, 0);
w = p.we_wordv;
for (i=0; i<p.we_wordc; i++)
printf("%s ", w[i]);
printf("\n");
wordfree(&p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这会在我的机器上产生以下输出(Ubuntu Linux 10.04,使用gcc编译).
$ ./a.out
This is my path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
我发现上面的联机帮助页最有用,但是GNU C Library Reference Manual中也提供了更多信息.
归档时间: |
|
查看次数: |
429 次 |
最近记录: |