Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了awk:直接在awk脚本中设置环境变量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

第一篇文章在这里,但多年来一直是潜伏者.我已经谷歌搜索了很多年,但无法找到我想要的东西(许多不切实际的话题主题,不要求主题暗示它做什么……).不是awk或脚本的新手,只是有点生锈:) 我正在尝试编写一个awk脚本,它将在运行时设置sHell env值 – 以便稍后拾取并使用另一个bash脚本.我不能简单地使用来自awk的stdout来报告我想要设置的这个值(即“export whatever =
@H_801_13@
第一篇文章在这里,但多年来一直是潜伏者.我已经谷歌搜索了很多年,但无法找到我想要的东西(许多不切实际的话题主题,不要求主题暗示它做什么……).不是awk或脚本的新手,只是有点生锈:)

我正在尝试编写一个awk脚本,它将在运行时设置shell env值 – 以便稍后拾取并使用另一个bash脚本.我不能简单地使用来自awk的stdout来报告我想要设置的这个值(即“export whatever = awk cmd here”),因为那已经指向了awkscript正在创建的’结果文件'(加上我有多个变量到无论如何导出最终代码).

作为示例测试脚本,演示我的问题:

echo $MYSCRIPT_RESULT          # returns nothing,not currently set
echo | awk -f scriptfile.awk   # do whatever,setTing MYSCRIPT_RESULT as we go
echo $MYSCRIPT_RESULT          # desired: returns the env value set in scriptfile.awk

在scriptfile.awk中,我试过(没有成功)

1 /)直接构建和执行adhoc字符串:

{
  cmdline="export MYSCRIPT_RESULT=1"
  cmdline
}

2 /)使用系统功能

{
  cmdline="export MYSCRIPT_RESULT=1"
  system(cmdlinE)
}

……但这些都行不通.我怀疑这两个命令是在sHell中创建一个子sHell,awk正在执行,并按照我的要求进行操作(通过将文件作为测试来证明),但是一旦“cmd”/系统调用完成,子sHell就会死掉,不幸的是采取我设置的任何东西 – 所以我的环境设置改变不要坚持“awk的调用者”的观点.

所以我的问题是,你如何直接在awk中设置env变量,以便调用进程可以在awk执行完成后访问这些env值?它真的可能吗?

除了上面的adhoc / system方法,我已经证明这对我来说是失败的,我无法看到如何做到这一点(除了将这些值写入某个地方的’随机文件,以便调用脚本拾取和读取,无论如何,imo有点脏,因此,帮助!

欢迎所有想法/建议/意见!

解决方法

您无法更改父进程的环境.如果

@H_560_25@mYVAR=`awk stuff`

是不可接受的,你所要求的是无法做到的.

大佬总结

以上是大佬教程为你收集整理的awk:直接在awk脚本中设置环境变量全部内容,希望文章能够帮你解决awk:直接在awk脚本中设置环境变量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。