1

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

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

这让我:

$ENV_CASTRO/central/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 的输出包含一个 $ ,这意味着它是一个环境变量而不是纯文本?

提前致谢。

4

2 回答 2

0

问题是 grep 命令的输出没有被 shell 评估,所以变量替换没有发生。

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

sh -c "cp `grep I241149 $ENV_CASTRO/ALL_CMD_LINES.BAK | grep -o '$ENV_CASTRO.*.asm'` ."
于 2011-10-26T23:07:40.060 回答
0

eval是你的朋友 ....

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

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

我希望这有帮助。

于 2011-10-27T02:40:40.843 回答