繁体   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