我正在尝试调试调用awk文件的shell脚本。 这是一场噩梦,因为我之前从未使用过,也不是我对linux非常流利,但无论如何
开发者创建了一个awk文件,并尝试在shell脚本中运行它。
要尝试从单独的位置运行它,而不需要指定确切的位置,他们将awk脚本放在PATH变量中的文件夹中。所以awk文件应该随处可用,对吗?
当你像这样运行它时......
awk -f script.awk arg1
...可以找到该脚本吗?当shell脚本尝试运行该awk命令时,它会发出错误:
awk:致命:无法打开源文件`script.awk'进行阅读(没有这样的文件或目录)
答案 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仅用于查找可执行文件。