我在 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 中的系统变量@include
中Path
,但没有提示错误。
迄今为止,这是我发现的最匹配的问题。但是,这个问题已经有答案了,而且楼主在那个例子中使用了错误的语法。
我已经从 ezywinports 下载了 gawk。
来源test.awk
是
@include "getopt.awk"
由于该变量AWKPATH
不是由 gawk 安装创建的,因此我继续自己创建它 - 见附图。此文件夹与 gawk 安装文件夹不在同一个物理内存单元上 - 链接到使用Path
windows var。
答案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 更有用一些。