簡體   English   中英

具有環境變量的Shell腳本

[英]Shell Script with environment variable

我有一個C程序,結尾處有以下代碼:

    memcpy(buff,"TEST=",4)
    putenv(buff)
    system("/bin/bash")

我在新的shell中放入了新的環境變量。 然后,我想將測試回顯到我可以輕松完成的文本文件中。 然后,我想退出外殼並再次運行它,因此運行如下

   ./cprog "some arg"
   echo $TEST > test.txt
   exit
   ./cprog "some arg"
   echo $TEST > test.txt
   exit

我必須繼續退出,以便可以更改TEST變量。 我如何才能在shell腳本中完成此工作,以便我可以繼續循環並運行c程序,以便可以更改參數,而從不退出shell腳本本身。

環境變量不是將信息從流程傳遞給用戶或調用流程的適當方法。 您應該將此信息寫入stdout(將其他任何信息寫入stderr)並適當地重定向。

如果您堅持使用此解決方案,則可以使用

for p in "one arg" "another arg" "more"
do 
    echo 'printf "%s\n" "$TEST" >> test.txt' | ./cprog "$p"
done

這將輸入命令以將變量寫入文件到程序中,然后退出外殼程序(因為輸入結束)。

最后,您將在文件test.txt連接所有$TEST的值。

您的程序不可能更改父進程的環境,這似乎是您試圖做的。

但是,您可以做的是讓您的程序僅打印所需的輸出,然后使用eval調用。

 $ ./cprog "wibble" TEST=wibble $ eval `./cprog "wibble"` $ echo ""TEST\\" is now equal to \\"$TEST\\"" "TEST" is now equal to "wibble" $ 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM