Le problème ce n'est pas la fonction system(). Ton problème c'est que l'expression "[10.1.2.3]" as un sens particulier pour le shell, et que tu as dans ton répertoire courant un fichier qui s'appelle "2".
Awk fait exécuter au shell la commande "echo [10.1.2.3]". Le shell commence faire faire un "pathname expansion" sur l'argument "[10.1.2.3]", qui signifie "Les fichiers nommés 1, ou 0, ou ., ou 2, ou 3. Si tu as un ou plusieurs fichiers qui vérifie ce critère, leur nom remplace l'expression. Dans ton cas tu as un fichier nommé "2", donc le "[10.1.2.3]" est remplacé par "2". Donc le shell exécute "echo 2".
Une solution simple est de mettre des quotes autour de l'expression, pour empêher le pathname expansion :
system("echo \"" $2 "\"" ) |
Message édité par matafan le 09-04-2009 à 13:46:37