我确信有一种更简单的方法可以做到这一点,所以我都是耳朵。
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吗?
Ĵ
答案 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/sh
和setenv | grep /bin/sh
也是如此,因此请查看/bin/sh
的引用设置位置。然后决定你将如何管理它。
当我运行你的代码时,我没有得到shell执行的任何迹象。我得到了
setenv INPUT_DIR `pwd`/file
但是我在ksh下运行代码。我没有使用csh进行测试。但对于特定情况,这应该不重要。
IHTH