Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在awk脚本中使用文件名 #/usr/bin/awk-f {如果(!FILENAME){print”“;exit}calc=0;…}_Linux_Bash_Shell_Unix_Awk - Fatal编程技术网

Linux 在awk脚本中使用文件名 #/usr/bin/awk-f {如果(!FILENAME){print”“;exit}calc=0;…}

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 # ... }

我试图在我的awk脚本中打印一条用法语句,因此如果脚本在没有输入文件的情况下运行,它会显示用法。这是我的尝试,但我假设我没有正确使用
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;....}