這裏我寫了一個C程序,它使用system
調用執行hi.sh
文件。使用C代碼獲取環境變量
在這裏,我用. ./hi.sh
所以我想在同一個外殼 執行該腳本,然後嘗試使用GETENV函數獲取環境變量,但我在這裏跟我想象中得到不同的輸出。
的hi.sh
文件包含
export TEST=10
return
意思,當我使用系統調用運行此hi.sh
文件,其export TEST
設置在同一殼的價值爲10。 在此之後,我試圖得到這個變量值,但它的值爲NULL
。
如果我從控制檯像. ./hi.sh
手動運行此腳本,那麼它工作正常,我得到TEST
使用getenv("TEST")
函數的10值。
代碼:
#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);
}
}
輸出:
Value is = (null)
我如何導出測試變量在程序的殼呢?如果system()
在不同shell中執行命令,那麼如何使用C程序代碼來獲取通過調用system()
調用而調用的shell導出的環境變量?
那麼,我如何才能實現這一目標? – user1089679 2012-04-03 09:30:37
如何將TEST變量導出到程序Shell? – user1089679 2012-04-03 09:33:24
@ user1089679運行C程序之前,請編寫腳本(設置環境)。這就是環境變量設計使用的方式。 – 2012-04-03 09:51:37