====== Script awk - Deux shebang ====== \\ Il est question de script //awk/gawk// utilisant un //shebang// approprié.\\ \\ ===== 1er shebang : #!/bin/awk -f ===== Avec le //shebang// ''#!/bin/awk -f'' 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 : #!/bin/awk -f BEGIN { for (i=0; i Et en l'appelant comme ceci : ./script_awk -v var="VAR" Le retour donne Argument 0 : gawk La variable vaut VAR 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 …\\ \\ ===== 2ième shebang : #!/bin/awk -E ===== 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 : ''#!/bin/awk -E''\\ Et donc avec le même script, on n'obtient pas le même retour : #!/bin/awk -E BEGIN { for (i=0; i L'appel : ./script_awk -v var="VAR" Le retour : Argument 0 : gawk Argument 1 : -v Argument 2 : var=VAR 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 8-)\\ \\ Ça laisse toute liberté sur le choix et la gestion des options/arguments de la ligne de commande appelant le script ''awk''.\\ \\ ===== Autre solution ===== Une autre solution consiste à utiliser l'indicateur de fin d'options ''--'' (2 tirets).\\ Ainsi en gardant le //shebang// habituel avec ''-f'', il est possible de passer des options et à ''awk'' et au script.\\ Un truc du genre : ./script_awk options_awk_ici -- options_script_ici arguments …\\ \\ \\ Vli, vlà, vlou pour la petite astuce :-)