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