1

私はtcshを使用しており、複数のIDを持つファイルからパスをgrepしようとしていますが、次のことを行っています。

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

それは私を得る:

$ ENV_CASTRO / center / 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'を統計できません:そのようなファイルまたはディレクトリはありません

grepの出力に$が含まれていることをtcshに伝えるにはどうすればよいですか。これは、環境変数であり、プレーンテキストではないことを意味します。

前もって感謝します。

4

2 に答える 2

0

問題は、grep コマンドの出力がシェルによって評価されていないため、変数の置換が行われていないことです。

これを解決する 1 つの方法は、別のシェル内で目的のコマンドを実行することです。たとえば、

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 に答える