我是awk脚本的新手。我试图弄清楚如何在没有awk -f命令的情况下运行awk文件。我看到人们一直在说添加"#!bin / awk -f"对于awk文件的第一行。但这对我的awk来说并非如此。它仍然给我"没有文件或目录"错误。 我的问题是"#!bin / awk -f"真的意思是,它做了什么?
答案 0 :(得分:0)
你可能想要
#!/bin/awk -f
(#!
之后的第一个斜线很重要。)
这告诉unix它应该用什么程序来运行'脚本用。
它通常被称为' shebang'来自hash + bang。
如果你想像这样运行你的脚本,你需要确保它是可执行的(chmod +x <script>
)。
否则,您只需输入命令/bin/awk -f <script>
答案 1 :(得分:0)
#!
是一个shebang行的开头,它告诉shell哪个解释器用于脚本。/bin/awk
是awk可执行文件的路径。你可能需要更改这是你的awk安装在别处,或者你想使用不同版本的awk。-f
是awk的标志,告诉它将标志的参数解释为awk脚本。在一个shebang中,它告诉一些awks解释脚本的其余部分而不是文件。您使用的#!bin/awk -f
不太可行,除非您将awk安装为$PWD/bin/awk
。您可能打算使用#!/bin/awk
代替。
在某些情况下,在shebang线上传递一个标志可能不适用于你的shell或你的awk。如果你让shebang线的其余部分正确,你可以尝试删除-f
标志,看看它是否适合你。
答案 2 :(得分:0)
其#!/bin/awk -f
而非#!bin/awk
。这可能会奏效,但没有保证。如果在其他位置安装了awk的人运行您的脚本,那么它将无法正常工作。你想要的是:#!/usr/bin/env awk -f
。
#!
告诉bash使用什么来解释你的脚本。它应该位于文件的最顶层。它被称为Shebang。在此之后,您将路径放到解释器。
/usr/bin/env
找到awk所在的位置,并使用该脚本作为解释器。因此,如果他们将awk安装到/usr/local/bin
等其他地方,那么它就会找到它。这对你来说可能不重要,但这是一个很好的习惯。它更便于携带,并且可以更轻松地共享。
-f
说awk会从文件中读取。您可以在bash中执行awk -f yourfilename.awk
,但在shebang中,-f
表示其余代码将是从中读取的文件。
我希望这有帮助。如果它不起作用或者不够清楚,请随时问我任何问题。