0

我确信有一种更简单的方法可以做到这一点,所以我全神贯注。

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 吗?

Ĵ

4

1 回答 1

0

'也添加拉路径'。??

你的意思是

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

输出

       setenv INPUT_DIR /home/shellter/filename

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

另请注意,单引号可防止处理反引号命令替换。您关闭单引号,获取您的 cmd-sub 值,然后再次打开单引号。

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

要回答标题中的问题,awk 几乎肯定会使用 $SHELL 环境变量中存储的值。或者可能有另一个变量,所以执行 aset | grep /bin/shsetenv | grep /bin/sh查看对的引用在哪里/bin/sh设置。然后决定你将如何管理它。

当我运行您的代码时,没有任何迹象表明 shell 已执行。我明白了

setenv INPUT_DIR `pwd`/file

但我在 ksh 下运行代码。我没有可用于测试的 csh。但是对于给定的情况,这应该无关紧要。

IHTH

于 2013-04-11T02:36:30.847 回答