私は、環境変数を含むさまざまなものを実装できるLinuxで単純なシェルをプログラムすることになっています。を使用してこれらの変数を出力しようとしまし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);
}
状態にはなりませんelse。たとえば、ユーザーが。と入力した場合echo ls $HOME。この入力は、であるに解析されcmdArgvますchar **。次に、私が持っている出力は
not a variable
ls
not a variable
$HOME
しかし$HOME、変数なので、私の実装getenvは正しくないかもしれません。何が問題だと思われるかについてのアイデアはありますか?ありがとう。