Grep путь, содержащий переменную окружения и использующий ее - PullRequest
1 голос
/ 26 октября 2011

Я использую tcsh и пытаюсь найти путь из файла с несколькими ID, я делаю:

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: невозможно stat` $ ENV_CASTRO / central / WS678 / test_do_all.asm ': нет такогофайл или каталог

Как мне сообщить tcsh, что вывод grep содержит $, что означает, что это переменная окружения, а не обычный текст?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 октября 2011

eval твой друг ....

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

У меня нет времени для создания файлов, чтобы проверить это.

Надеюсь, это поможет.

0 голосов
/ 27 октября 2011

Проблема в том, что выходные данные команды grep не оцениваются оболочкой, и поэтому подстановка переменных не происходит.

Один из способов решить эту проблему - выполнить нужную команду в другой оболочке.например,

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