Utiliser FILENAME en script awk

#!/usr/bin/awk -f {if(!FILENAME) {print " "; exit} calc = 0;....} 

J’essaie d’imprimer une instruction d’utilisation dans mon script awk, donc si le script est exécuté sans fichier d’entrée, il indique l’utilisation. C’est ma tentative, mais je suppose que je n’utilise pas correctement la variable FILENAME . J’ai également essayé de mettre l’instruction if dans un bloc BEGIN et END , mais rien n’a fonctionné.

 BEGIN{if (ARGC!=2) {print " "; exit} {calc = 0;....} 

Utilisez ARGC place.

 BEGIN { if(ARGC==1) { print " " exit } calc = 0 # ... } 

Edit: Malheureusement, @shaikisiegal a supprimé sa réponse, alors je vais append cette citation de la section de documentation GNU awk sur les variables intégrées ici:

NOM DE FICHIER C’est le nom du fichier que awk lit actuellement. Si aucun fichier de données n’est répertorié sur la ligne de commande, awk lit à partir de l’entrée standard et FILENAME est défini sur “-“. FILENAME est modifié chaque fois qu’un nouveau fichier est lu (voir la section Lecture des fichiers d’entrée). Dans une règle BEGIN, la valeur de FILENAME est “”, car aucun fichier d’entrée n’est en cours de traitement.

Certaines des premières implémentations de Unix awk initialisaient FILENAME sur “-“, même s’il y avait des fichiers de données à traiter. Ce comportement était incorrect et ne devrait pas être utilisé dans vos programmes.