AWK调用sh而不是csh
问题描述:
我相信有一个更简单的方法来做到这一点,所以我都耳熟能详。AWK调用sh而不是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吗?
J
答
'添加拉路径'。 ??
你的意思
echo "fileName" | awk '{printf("setenv '`pwd`'/%s\n", $1)}'
输出
setenv INPUT_DIR /home/shellter/filename
我已经更换了你sort ... | tail ..
作为似乎并没有成为你的核心问题。
另请注意,单引号可防止正在处理的反引号命令替换。你关掉单引号,得到你的cmd-sub值,再次引用单引号。
如果这不是你的意思,请编辑你的问题,并用一个简单的echo“string”代替sort ... tail ...
,并包含预期的输出。它也将有助于包括你目前得到的输出。
要回答标题中的问题,awk几乎肯定会使用存储在$ SHELL环境变量中的值。或者可能有另一个变量,那么set | grep /bin/sh
和setenv | grep /bin/sh
也是如此,以便查看对/bin/sh
的引用正在设置的位置。然后决定你如何去管理它。
当我运行你的代码时,我没有得到任何表明shell被执行的迹象。我得到
setenv INPUT_DIR `pwd`/file
但我在ksh下运行代码。我没有csh使用测试。但对于特定情况,这应该不重要。
IHTH
您发布的脚本与awk system()命令无关,因此您对该脚本或system()的问题? – 2013-04-11 12:09:51