Vous n'êtes pas identifié(e).
les options passées sur la ligne de commande appelant le script sont traitées comme des options pour awk
Ainsi avec un script du genre :
Et en l'appelant comme ceci :
Le retour donne
L'option -v a été traitée par awk, on ne la voit pas apparaître dans le tableau des arguments.
Ok, ça peut-être pratique. On peut passer des variables à un programme awk, changer le comportement d'un script …
Mais si mon script awk a ses propres options, il risque d'y avoir des "interférences" avec les options d'awk.
Pour cela, il existe une option d'awk qui permet de ne plus considérer les options de la ligne de commande tout en exécutant le "fichier programme".
C'est un peu comme -f sauf que je vais devoir traiter la ligne de commande dans mon script awk.
Cette option est -E et le shebang devient :
Et donc avec le même script, on n'obtient pas le même retour :
L'appel :
Le retour :
L'option -v n'a pas été prise en compte par awk.
Je peux donc la traiter dans mon script awk ainsi que son argument. Il existe une fonction getopt pour gérer cela
Je vais pouvoir revoir tous mes scripts awk où j'utilise bash juste pour la gestion des options …
Edit:
C'est maintenant sur ma page perso : Script awk - Deux shebang
Edit2:
Il existe une autre solution :
Elle consiste à utiliser l'indicateur de fin d'options '--'.
Ainsi en gardant le shebang habituel avec -f, il est possible de passer des options et à awk et au script.
Un truc du genre :
Dernière modification par Tawal (15-10-2024 23:52:24)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
Ainsi en sauvegardant cette fonction dans un répertoire du AWKPATH,
elle peut être préchargée par un script (pas besoin de la copier/coller).
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne