从 tcsh 中的 awk 设置环境

从 tcsh 中的 awk 设置环境

我正在尝试从 awk 中每行设置一个环境变量:

$ <source command> awk '/inst/ { n = split($0,a,"/"); cmd = "setenv " a[n-1] "_ver" $0; system(cmd) }'

但是我得到的结果是“sh:setenv:找不到命令”。

答案1

setenv是一个仅限 csh 的命令,但system()通过 Bourne shell ( /bin/sh) 运行其参数,而不是csh.您希望命令适用export VARIABLE=value于 Bourne shell。

然而,即使你这样做了,也是没有效果的。system()启动一个新的 shell 并在该 shell 中运行命令。一旦命令终止,该 shell 及其环境就会消失。所以你设置的环境变量很快就消失了。

您需要做的是awk生成要运行和输出的命令列表csh(不要尝试运行它们)。然后您需要创建调用awkread输出的 shellawk并运行它:

eval `the awk command`

相关内容