awk脚本标题:#!/ bin/bash或#!/ bin/awk -f?

anv*_*nvd 4 linux bash shell awk

在一个awk文件,如example.awk,如果头是#!/bin/bash还是#!/bin/awk -f

我的问题的原因是,如果我在控制台中尝试此命令,我会收到带有"文本行"的正确file.txt:

 awk 'BEGIN {print "line of text"}' >> file.txt
Run Code Online (Sandbox Code Playgroud)

但如果我尝试使用./example.awk执行以下文件:

#! /bin/awk -f
awk 'BEGIN {print "line of text"}' >> file.txt
Run Code Online (Sandbox Code Playgroud)

它返回一个错误:

$ ./awk-usage.awk
awk: ./awk-usage.awk:3: awk 'BEGIN {print "line of text"}' >> file.txt
awk: ./awk-usage.awk:3:     ^ invalid char ''' in expression
Run Code Online (Sandbox Code Playgroud)

如果我将标题更改为#!/bin/bash#!/bin/sh它的工作原理.

我的错误是什么?这是什么原因?

mar*_*cog 7

由于您显式运行该awk命令,您应该使用#!/bin/bash.您可以使用#!/bin/awk,如果你删除awk命令,并只包括awk程序(例如BEGIN {print "line of text"}),但你需要追加到file用awk语法(print ... >> file).

awk -f 获取包含awk脚本的文件,因此这里完全错误.