Shell - Utilisation de variable avec awk
Résolu/Fermé
gamerounet
-
29 sept. 2011 à 09:48
dubcek Messages postés 18769 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 2025 - 30 sept. 2011 à 12:04
dubcek Messages postés 18769 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 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
- F lux - Télécharger - Divers Utilitaires
2 réponses
mamiemando
Messages postés
33606
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
26 mars 2025
7 836
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
18769
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 629
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