从shell脚本运行awk文件而不指定awk的确切位置

时间:2011-08-26 15:06:31

标签: linux shell awk

我正在尝试调试调用awk文件的shell脚本。 这是一场噩梦,因为我之前从未使用过,也不是我对linux非常流利,但无论如何

开发者创建了一个awk文件,并尝试在shell脚本中运行它。

要尝试从单独的位置运行它,而不需要指定确切的位置,他们将awk脚本放在PATH变量中的文件夹中。所以awk文件应该随处可用,对吗?

当你像这样运行它时......

  

awk -f script.awk arg1

...可以找到该脚本吗?当shell脚本尝试运行该awk命令时,它会发出错误:

  

awk:致命:无法打开源文件`script.awk'进行阅读(没有这样的文件或目录)

2 个答案:

答案 0 :(得分:7)

如您所知,awk无法找到脚本本身。

如果脚本被标记为可执行文件,并且您有which命令,那么您应该可以这样做:

awk -f `which script.awk` arg1

或者,可能更好,将脚本变成可执行文件:

#!/usr/bin/awk -f 
BEGIN { x = 23 }
      { x += 2 }
END   { print x }

shebang需要'-f'选项才能在我测试的MacOS X 10.7.1上运行:

$ script.awk script.awk
31
$

这为您提供了一个独立的单文件解决方案。

答案 1 :(得分:2)

不,那不行。 awk需要运行脚本的路径,它不会使用PATH变量来查找它。 PATH仅用于查找可执行文件。