Grep包含环境变量并使用它的路径

时间:2011-10-26 16:19:57

标签: unix grep tcsh

我正在使用tcsh,我正在尝试从具有多个ID的文件中获取路径,我正在做:

  

grep I241149 $ ENV_CASTRO / ALL_CMD_LINES.BAK | grep -o \ $“ENV_CASTRO。*。asm”

让我:

$ ENV_CASTRO /中央/ WS678 / test_do_all.asm

但如果我尝试

  

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

提示

cp:无法统计`$ ENV_CASTRO / central / WS678 / test_do_all.asm':没有这样的文件或目录

如何告诉tcsh grep的输出包含$表示它是一个环境变量而不是纯文本?

提前致谢。

2 个答案:

答案 0 :(得分:0)

问题是shell没有评估grep命令的输出,因此不会发生变量替换。

解决此问题的一种方法是在另一个shell中执行所需的命令,例如

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

答案 1 :(得分:0)

eval是你的朋友......

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

我没有时间创建文件来测试它。

我希望这会有所帮助。