mka*_*kab 0 c linux shell environment-variables getenv
我将在linux中编写一个简单的shell,它可以实现包括环境变量在内的各种东西.我尝试使用这些变量打印,getenv但我遇到了一些问题.即使用户输入正确的变量,也getenv总是返回.这是我的代码NULL$HOME
int i = 0;
if(strcmp(cmdArgv[i], "echo") == 0){
char *variable;
for(i = 1; cmdArgv[i] != NULL; i++){
variable = getenv(cmdArgv[i]);
if(!variable){
puts("not a variable");
printf("%s ", cmdArgv[i]);
}else{
puts("a variable");
printf("%s ", variable);
}
}
printf("\n");
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
它没有进入else条件.例如,如果用户键入echo ls $HOME.此输入被解析为cmdArgva char **.然后我的输出是
not a variable
ls
not a variable
$HOME
Run Code Online (Sandbox Code Playgroud)
但是$HOME是一个变量,所以也许我的实现getenv是不对的.关于什么似乎是问题的任何想法?谢谢.