#!/usr/bin/awk -f
{if(!FILENAME) {print "<Gasp.sh> <inputfile>"; exit} calc = 0;....}
我正在尝试在我的awk脚本中打印出一个用法语句,所以如果脚本在没有输入文件的情况下运行,它会显示用法。这是我的尝试,但我假设我没有正确使用FILENAME
变量。我也尝试将if语句放在BEGIN
和END
块中,但没有任何效果。
答案 0 :(得分:5)
BEGIN{if (ARGC!=2) {print "<Gasp.sh> <inputfile>"; exit} {calc = 0;....}
答案 1 :(得分:4)
改为使用ARGC
;
BEGIN {
if(ARGC==1) {
print "<Gasp.sh> <inputfile>"
exit
}
calc = 0
# ...
}
编辑:不幸的是@shaikisiegal删除了他的答案,所以我将在这里添加GNU awk文档部分内置变量的引用:
<强> FILENAME 强> 这是awk当前正在阅读的文件的名称。当命令行中没有列出数据文件时,awk从标准输入读取,并且FILENAME设置为&#34; - &#34;。每次读取新文件时都会更改FILENAME(请参阅读取输入文件一节)。在BEGIN规则中,FILENAME的值为&#34;&#34;,因为尚未处理输入文件。
Unix awk的一些早期实现将FILENAME初始化为&#34; - &#34;,即使有数据文件需要处理。此行为不正确,不应依赖于您的程序。