Je suis un débutant Unix et me casse les dents sur une commande que je souhaite intégrer à un script .awk.
J'ai dans mon système une variable système $PATTERN qui contient un chemin prédéfini.
echo $PATTERNdirectement en ligne de commande linux ramène la valeur voulue.
Je souhaite intégrer à mon script awk une ligne de commande où j'apelle ce $PATTERN.
J'ai donc construit le code suivant qui ne fonctionne pas:
CommandLine="awk -F \"=\" '$1==out {print $2 }' "$PATTERN"/chemin.ini| head -n 1"
Il semble que le $PATTERN ne soit pas trouvé et qu'il cherche donc le chemin.ini dans le repertoire d'execution du script awk.
Alors que si je reprend le même code directement en ligne de commande, le $PATTERN va être pris en compte, le chemin.ini va être trouvé et le reste de la commande awk va se faire normalement.
awk -F"=" '$1=="out" {print $2}' "$PATTERN"/chemin.ini
Je ne comprend pas pourquoi directement en ligne de commande, la variable est correctement trouvée alors qu'une fois dans un script, cette variable ne semble plus exister.
J'ai trouvé dans le forum la suggestion du -v
J'ai donc essayé la ligne suivante :
CommandLine="awk -v PATTERN=$PATTERN -F \"=\" '$1==out {print = $2 }' "PATTERN"/chemin.ini| head -n 1"
Qui me renvoie l'erreur :
cannot open file `/chemin.ini' for reading (No such file or directory)
J'ai également essayé d'affecter $PATTERN dans une variable "TOTO" appelée par la suite dans la CommandLine
TOTO= $PATTERN"/chemin.ini"
awk -F"=" '$1=="out" {print $2}' "TOTO"
Le résultat est le même. $PATTERN n'est pas lu et TOTO reste vide.
Bref, je tatonne, sans trouver de solution.
Vu que je débute peut être s'agit t'il d'une bête erreur de syntaxe.
Merci d'avance pour votre aide.

Ce qui me déroute dans ce que tu dis, c'est que cette syntaxe fonctionne parfaitement avec d'autres fonctions du script.
A priori ce n'est pas ca qui expliquerait non plus pourquoi je n'arrive pas à affecter ma variable $PATTERN dans une variable awk.
Par acquis de conscience j'ai essayé avec ta syntaxe et elle me ramène l'erreur suivante :
awk: adeo_desadv_bl_tst.awk:574: CommandLine=$(awk -F \"=\" '$1==out {print = $2 }' "$PATTERN"/chemin.ini| head -n 1) awk: adeo_desadv_bl_tst.awk:574: ^ backslash not last character on lineLe problème ne se présente que lorsque je souhaite intégrer une variable d'environnement dans le script awk.