我有一个 awk 文件,densel.awk
其中包含以下调用
@include "klnpan.awk"
似乎需要包含“mylib.awk”的路径,即使它存在于同一目录中,因为
error: cannot open source file `klnpan.awk' for reading: No such file or directory
我运行densel.awk
如下
awk -f "${path}"/densel.awk
答案1
awk
被编写来寻找变量AWKPATH
。它可以包含一个:
分隔的字符串(类似于$PATH
),它将在其中查找文件。
默认值取决于构建,但可能类似于.:/usr/local/share/awk
这意味着它将在当前目录和系统目录中查找文件。
您可以将其设置为您的应用程序目录;例如
export AWKPATH=/path/to/awk/files
awk -f densel.awk
答案2
我在 .bashrc 中执行此操作来设置 AWKPATH:
if [[ -d $HOME/gawk ]] && command -v gawk >/dev/null; then
if [[ -n $AWKPATH ]]; then
AWKPATH=$(gawk 'BEGIN {print ENVIRON["AWKPATH"]}')
export AWKPATH
fi
if [[ ":$AWKPATH:" != *:"$HOME/gawk":* ]]; then
AWKPATH+=":$HOME/gawk"
fi
fi
替换$HOME/gawk
为您存储 gawk 库的位置。
另外,由于所有这些功能都是 GNU awk 独有的,因此您可能想习惯于键入gawk