私は、環境変数を含むさまざまなものを実装できる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
は正しくないかもしれません。何が問題だと思われるかについてのアイデアはありますか?ありがとう。