Qui ho scritto un programma C che esegue il file hi.sh
utilizzando la chiamata system
.Ottieni le variabili di ambiente utilizzando il codice C
Qui ho usato . ./hi.sh
quindi voglio eseguire questo script nella stessa shell e quindi provare a ottenere la variabile di ambiente utilizzando la funzione getenv, ma qui sto ottenendo output diverso da quello che mi aspettavo.
Il file hi.sh
contiene
export TEST=10
return
significa che quando si esegue questo file hi.sh
utilizzando la chiamata di sistema, la sua export TEST
imposta il valore di 10 nella stessa shell. Dopo questo, sto cercando di ottenere questo valore variabile ma il suo valore NULL
dato.
E se eseguo questo script manualmente dalla console come . ./hi.sh
, allora funziona correttamente e ottengo il valore 10 TEST
utilizzando la funzione getenv("TEST")
.
Codice:
#include <stdio.h>
int main()
{
system(". ./hi.sh");
char *errcode;
char *env = "TEST";
int errCode;
errcode = getenv(env);
printf("Value is = %s\n",errcode);
if (errcode != NULL) {
errCode =atoi(errcode);
printf("Value is = %d\n",errCode);
}
}
uscita:
Value is = (null)
Come posso esportare variabile TEST in guscio programma? Se system()
esegue comandi in shell diverse, come posso utilizzare il codice di programma C per ottenere una variabile di ambiente che viene esportata dalla shell richiamata tramite una chiamata system()
?
Quindi, come posso ottenere questo obiettivo? – user1089679
Come posso esportare la variabile TEST per programmare Shell? – user1089679
@ user1089679 Crea il tuo script (imposta l'ambiente) prima di eseguire il tuo programma C. Ecco come sono state progettate le variabili di ambiente da utilizzare. –