TCL: exec egrep “processus enfant est sorti anormalement”
J'ai un problème avec la commande egrep.
Lorsque j'exécute ma commande en tcsh il est travail parfait, mais quand je l'exécuter de script tcl ou dans tclsh, j'ai eu:
processus enfant est sorti anormalement
Mon tcl code:
exec egrep -i "^(\\\s+)?(tvf::)?LAYOUT\\\s+PATH" test_file
La test_file contenir
LAYOUT PATH "file1"
LAYOUT PATH "file2"
//LAYOUT FILE "file 3"
foo string
tvf::LAYOUT PATH "file4"
tvf::LAYOUT PATH "file5"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Bonjour à tous,
J'ai fait quelques investigations supplémentaires et exécutez cette commande sur un ordinateur 32 bits.
La commande fonctionne correctement avec 32 bits egrep
Résultat:
LAYOUT PATH "file1"
LAYOUT PATH "file2"
tvf::LAYOUT PATH "file3"
tvf::LAYOUT PATH "file3"
fichier /bin/egrep
*/bin/egrep: lien symbolique `grep'*
fichier /bin/grep
*/bin/grep: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), pour GNU/Linux 2.2.5, liée de façon dynamique (utilise shared libs), dépouillé*
Mais quand j'ai supprimer les barres obliques inverses :
exec egrep -i "^(\s+)?(tvf::)?LAYOUT\s+PATH" test_file
La commande de retour d'erreur:
processus enfant est sorti anormalement
La egrep version 64 bits de la machine est:
fichier /bin/egrep
*/bin/egrep: lien symbolique `grep'*
fichier /bin/grep
*/bin/grep: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), pour GNU/Linux 2.6.9, liée de façon dynamique (utilise shared libs), pour GNU/Linux 2.6.9, dépouillé*
Bonjour Donal, sans ces barres obliques inverses la commande de retour d'erreur sur l'ordinateur 32 bits
Mettre REs dans
{
accolades }
vous permettrait de réduire le nombre, que rien n'aurait besoin de le citer.Et “ordinateur 32 bits” est juste le plus grand de red herring jamais. La taille de la machine parole et de l'espace d'adressage a rien à voir avec votre problème.
OriginalL'auteur Roman Kaganovich | 2012-04-29
Vous devez vous connecter pour publier un commentaire.
grep utilise son statut de sortie pour indiquer la présence/absence d'un match (page de man) - si aucun des matches de l'état de sortie est 1. Tcl est
exec
traite toute sortie non nulle statut d'une situation exceptionnelle. Vous devezcatch
l'exec appel, vérifier la valeur de retour de catch et si différente de zéro examiner les$errorCode
variable. Une approfondie exemple ici: http://wiki.tcl.tk/exec, cliquez sur "Afficher Discussion" et faites défiler vers le bas pour KBK l'exemple.OriginalL'auteur glenn jackman
J'ai eu le même message d'erreur lors de l'exécution de la commande suivante:
TCL n'était pas heureux au sujet d'une barre oblique "/" dans l'expression grep.
Il a obtenu fixe à l'aide de "-ignorestderr" switch:
OriginalL'auteur OutputLogic