AWK调用sh而不是csh

时间:2013-04-11 01:56:57

标签: awk csh

我确信有一种更简单的方法可以做到这一点,所以我都是耳朵。

sort -nrk 7 my_list.tsv | tail -n 1 | awk '{print("setenv INPUT_DIR `pwd`/"$1)}'

我的.tsv中的第一项是我试图在csh中设置为环境变量的文件名(已排序)。我也想添加拉路径。我虽然这会起作用但是......

sh: setenv: command not found

即使我在使用csh。我可以使用awk系统函数来使用csh / tcsh吗?

Ĵ

1 个答案:

答案 0 :(得分:0)

'添加拉路径'。 ??

你的意思是

       echo "fileName" | awk '{printf("setenv '`pwd`'/%s\n", $1)}'

输出

       setenv INPUT_DIR /home/shellter/filename

我已经替换了您的sort ... | tail ..,因为这似乎不是您的核心问题。

另请注意,单引号会阻止正在处理的反引号命令替换。你关闭单引号,得到你的cmd-sub值,再转回单引号。

如果这不是您的意思,请编辑您的问题,并使用简单的回声“字符串”替换上面的sort ... tail ...,并包括预期的输出。它还有助于包含您当前获得的输出。

要回答标题中的问题,awk几乎肯定会使用存储在$ SHELL环境变量中的值。或者可能还有另一个变量,set | grep /bin/shsetenv | grep /bin/sh也是如此,因此请查看/bin/sh的引用设置位置。然后决定你将如何管理它。

当我运行你的代码时,我没有得到shell执行的任何迹象。我得到了

setenv INPUT_DIR `pwd`/file

但是我在ksh下运行代码。我没有使用csh进行测试。但对于特定情况,这应该不重要。

IHTH