我正在使用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的输出包含$表示它是一个环境变量而不是纯文本?
提前致谢。
答案 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"` .
我没有时间创建文件来测试它。
我希望这会有所帮助。