Shell - Utilisation de variable avec awk
Résolu/Fermé
gamerounet
-
29 sept. 2011 à 09:48
dubcek Messages postés 18782 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 avril 2025 - 30 sept. 2011 à 12:04
dubcek Messages postés 18782 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 avril 2025 - 30 sept. 2011 à 12:04
A voir également:
- Shell awk -f
- Classic shell windows 11 - Télécharger - Personnalisation
- Sfc /scannow /f /r - Guide
- Chkdsk c /f /r - Guide
- Shell startup windows 10 - Guide
- Ssh secure shell download - Télécharger - Divers Web & Internet
2 réponses
mamiemando
Messages postés
33636
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 avril 2025
7 842
Modifié par mamiemando le 29/09/2011 à 09:57
Modifié par mamiemando le 29/09/2011 à 09:57
C'est normal, avec l'opérateur '...' le shell n'évalue pas les valeurs de variables (typiquement $VAR). Il faut les échapper. On sent bien en plus qu'il y a quelque chose à faire car $0, $1... n'ont pas la même signification en shelle et en awk.
Bref, il faut utiliser l'opérateur "..." et échapper (avec \) les opérateurs awk pour qu'ils ne soient pas interprétés en tant qu'opérateurs shell.
Voici par exemple un script shell qui liste les processus de root et qui apparaissent dans ps -Af :
Pour éviter ce genre d'erreur, tu peux utiliser un éditeur texte qui propose de la coloration syntaxique (par exemple vim) et qui t'aidera à comprendre comment ta commande shell est évaluée.
Bonne chance
Bref, il faut utiliser l'opérateur "..." et échapper (avec \) les opérateurs awk pour qu'ils ne soient pas interprétés en tant qu'opérateurs shell.
Voici par exemple un script shell qui liste les processus de root et qui apparaissent dans ps -Af :
#!/bin/sh VAR="root" ps -Af | awk "{if ( \$1 == \"$VAR\" ) print \$0}"
Pour éviter ce genre d'erreur, tu peux utiliser un éditeur texte qui propose de la coloration syntaxique (par exemple vim) et qui t'aidera à comprendre comment ta commande shell est évaluée.
Bonne chance
dubcek
Messages postés
18782
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 avril 2025
5 630
Modifié par dubcek le 30/09/2011 à 12:05
Modifié par dubcek le 30/09/2011 à 12:05
hello
on peut aussi faire
on peut aussi faire
ps -Af | awk -v var=$VAR '/java/ && $3==var {print $0}'
29 sept. 2011 à 10:08
Merci, ça marche !
29 sept. 2011 à 19:00