0

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

4

1 に答える 1

7

変数はHOME、ではなく、と呼ばれ$HOMEます。(後者は、変数を展開するためのシェルの構文です。)

于 2011-11-27T23:33:22.223 に答える