Comment transmettre des variable avec awk -v val=valeur ?

Comment transmettre des variable avec awk -v val=valeur ? - Linux et OS Alternatifs

Marsh Posté le 12-03-2005 à 16:31:29    

Voici mon script :
 

Code :
  1. user=`cat /etc/passwd | cut -d ":" -f 1`;
  2. awk -v var=$user '{
  3.                         for (i in $user)
  4.                         do
  5.                                 if ($i=$3)
  6.                                 {
  7.                                         print $1;
  8.                                 }
  9.                         done
  10.                         }'
  11. security


 
 
 
lorsque je le lance j'ai comme message d'erreur :
 $ ./test2
awk: cannot open bin (No such file or directory)
./test2: line 12: security: command not found
 
 
Pourquoi ne veut il pas prendre en compte mon fichier texte security qui est dans le meme repertoire que mon script ?


Message édité par weed le 13-03-2005 à 11:56:15
Reply

Marsh Posté le 12-03-2005 à 16:31:29   

Reply

Marsh Posté le 12-03-2005 à 16:45:41    

peut-être tout simplement parce que security n'est pas dans le $PATH ?
 
en mettant un ./security ?


Message édité par Acontios le 12-03-2005 à 16:45:59

---------------
"not everyone likes metal..... FUCK THEM" Fat Ed.
Reply

Marsh Posté le 12-03-2005 à 16:47:34    

[jorge@blackknight]-(/Temp)> cat test.sh
#!/bin/bash
echo OK !
 
[jorge@blackknight]-(/Temp)> cat launch.sh
#!/bin/bash
test.sh
[jorge@blackknight]-(/Temp)> cat launch2.sh
#!/bin/bash
./test.sh
[jorge@blackknight]-(/Temp)> sh launch.sh
launch.sh: line 2: test.sh: command not found
[jorge@blackknight]-<Failed 127>-(/Temp)> sh launch2.sh
OK !


---------------
"not everyone likes metal..... FUCK THEM" Fat Ed.
Reply

Marsh Posté le 12-03-2005 à 19:04:08    

911GT3 a écrit :

peut-être tout simplement parce que security n'est pas dans le $PATH ?
 
en mettant un ./security ?


 
Pourquoi voudrait que je mette security dans le $PATH.
security n'est juste qu'un fichier texte que j'aimerais que awk traite, security n'est pas une commande

Reply

Marsh Posté le 12-03-2005 à 19:13:15    

normallement la syntaxe c'est  
awk '{ traitement}' fichier_texte_a_traiter

Reply

Marsh Posté le 12-03-2005 à 23:23:37    

up

Reply

Marsh Posté le 12-03-2005 à 23:33:15    

1) si tu mets -v var=$user, la variable s'appelle $var dans awk, pas $user.
 
2) il faut mettre des \ en fin de ligne, sinon le shell considère ça comme une nouvelle commande.

Reply

Marsh Posté le 13-03-2005 à 11:55:23    

1./ oui je me suis rendue qu'il fallait que j'utilise $val et non pas $user.
J'ai aussi remarqué qu'il fallait ne pas mettre de $ dans - v val=user
 
2./ oki, tu veux dire apres l'accolade....
 
Mais en fait j'arrive toujours pas à transmettre la variable $user dans awk
 
 

Code :
  1. user=`cat /etc/passwd | cut -d ":" -f 1`;
  2. awk -v val="user" '{
  3.                     for (i in val)
  4.                     {
  5.                               print $i
  6.                     }
  7.                   }' /home/nec1/awk/security


 
lorsque je le lance, je n'arrive pas a afficher les valeurs de val. Cela n'affiche rien alors que cela devrai me donner les utilisateurs de mon systeme.
 
 
La syntaxe d'un for dans un awk est :
for (i in liste)
{
}  
il faut mettre des ( ) et des { }  et il ne faut pas mettre de $ pour la variable liste, si j'ai bien compris : http://www.chez.com/brunogarcia/Unix/Docs/awk.html
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed