Windows 中的 AWKPATH 未加载资源(gawk 4.2)

Windows 中的 AWKPATH 未加载资源(gawk 4.2)

我在 Windows 7 机器上运行 gawk 4.2。我尝试设置AWKPATH环境变量我正在运行的 gawk 程序中的一些可重复使用的脚本片段。这是@include目前发生的情况:内容AWKPATH似乎没有加载:实际上,当我运行我的脚本时,我得到了:

gawk -f test.awk
gawk: test.awk:1: error: can't open source file 'getopt.awk' for reading (No such file or directory)

我尝试将脚本的相同根粘贴到Windows 中的系统变量@includePath,但没有提示错误。

迄今为止,是我发现的最匹配的问题。但是,这个问题已经有答案了,而且楼主在那个例子中使用了错误的语法。

我已经从 ezywinports 下载了 gawk。

来源test.awk

@include "getopt.awk"

由于该变量AWKPATH不是由 gawk 安装创建的,因此我继续自己创建它 - 见附图。此文件夹与 gawk 安装文件夹不在同一个物理内存单元上 - 链接到使用Pathwindows var。

在 Windows 7 上创建新变量

答案1

我在 Windows 10 上运行从 gnuwin32.org 下载的 gawk 4.2.1。我遇到了类似的问题。当我使用

set AWKPATH=/foo/bar

awk不再在当前目录中找到脚本文件;即无法在当前目录中awk -f script.awk找到。但是,如果我使用script.awk

set AWKPATH=.:/foo/bar

然后它在当前目录中查找脚本。我还可以确认它AWKPATH正在被正确读取,因为如果我运行这个:

awk 'BEGIN { print ENVIRON["AWKPATH"] }'

我获取了当前AWKPATH设置。如果我使用此设置(注意反斜杠和驱动器号):

set AWKPATH=.:c:\foo\bar

如果我用完了另一个驱动器(不是 C:),路径搜索就会失败,但是确实有效如果我在 C: 驱动器上。如果我省略驱动器号,行为是相同的。因此,看起来 gawk 不能正确处理驱动器号,并且您必须使用反斜杠作为路径分隔符。

由于我只有两个常用的驱动器,因此我AWKPATH在两个驱动器上复制了我使用的路径。保持同步很麻烦,但这样做有效。我希望这有助于让 awk 更有用一些。

相关内容