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

Cra*_*uin 4 linux shell awk

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

一个dev创建了一个awk文件,并试图在shell脚本中运行它.

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

当你像这样运行它...

awk -f script.awk arg1

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

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

Jon*_*ler 7

如您所知,awk找不到脚本本身.

如果脚本被标记为可执行文件,并且您有一个which命令,那么您应该能够:

awk -f `which script.awk` arg1
Run Code Online (Sandbox Code Playgroud)

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

#!/usr/bin/awk -f 
BEGIN { x = 23 }
      { x += 2 }
END   { print x }
Run Code Online (Sandbox Code Playgroud)

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

$ script.awk script.awk
31
$
Run Code Online (Sandbox Code Playgroud)

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