2011-10-26 3 views
1

J'utilise tcsh, et je suis en train de grep un chemin d'un fichier avec plusieurs ID, je fais:Grep un chemin contenant une variable d'environnement et de l'utiliser

grep I241149 $ ENV_CASTRO /ALL_CMD_LINES.BAK | grep -o $ \ ". ENV_CASTRO * asm"

qui me fait:

$ ENV_CASTRO/central/WS678/test_do_all.asm

mais si je tente

cp `grep I241149 $ ENV_CASTRO/ALL_CMD_LINES.BAK | grep -o \ $ "ENV_CASTRO. *. asm" `.

il demande

cp: can not stat `$ ENV_CASTRO/central/WS678/test_do_all.asm ': Aucun fichier ou répertoire

Comment puis-je dire tcsh que la sortie de grep contient une $ cela signifie que c'est une variable d'environnement et n'est pas un texte simple?

Merci d'avance.

Répondre

0

eval est votre ami ....

eval cp `grep I241149 $ENV_CASTRO/ALL_CMD_LINES.BAK | grep -o \$"ENV_CASTRO.*.asm"` . 

Je n'ai pas le temps de créer des fichiers pour tester cela.

J'espère que cela aide.

+0

Merci beaucoup, Cela fonctionne parfaitement !! – lcastrol

0

Le problème est que la sortie de la commande grep n'est pas évaluée par l'interpréteur de commandes et qu'il n'y a donc pas de substitution de variable.

Une façon de résoudre ce serait d'exécuter la commande désirée dans un autre shell, par exemple,

sh -c "cp `grep I241149 $ENV_CASTRO/ALL_CMD_LINES.BAK | grep -o '$ENV_CASTRO.*.asm'` ." 
Questions connexes