我如何模仿 Awk Bash 的“cat "$0"”?

问题描述 投票:0回答:1

当我执行此脚本时,

./cat-itself.sh
它将自身打印到标准输出,而无需我从终端显式为其提供任何位置参数:

#!/usr/bin/bash

cat "$0"

我如何在 Awk(特别是 Gawk)中完成同样的任务? 我的尝试是这样的

#!/usr/bin/awk -f

{
    print
}

但是这有两个问题: 1. 它会将您作为位置参数提供的任何内容打印到标准输出,例如

./cat-itself.awk cat-itself.awk
2. 它需要一个位置参数才能将任何内容打印到标准输出。我想要一个脚本 像这样运行时就可以了
./cat-itself.awk

bash awk argv
1个回答
0
投票

使用

gawk
,您可以使用 Ed Morton 建议的解决方案获取文件名,然后您可以使用
getline
打印文件的内容:

#!/usr/bin/gawk -f
BEGIN {
filename=ENVIRON["_"];
while ((getline line < filename) > 0)
  print line
close(filename)
}
$ ./awkcat.sh
#!/usr/bin/gawk -f
BEGIN {
filename=ENVIRON["_"];
while ((getline line < filename) > 0)
  print line
close(filename)
}
© www.soinside.com 2019 - 2024. All rights reserved.