【发布时间】:2011-07-28 02:24:46
【问题描述】:
我正在使用 make,我想在 sed 中引用一个 shell 变量。但是,在sed-call 中,$$LASTMOD 只扩展为$LASTMOD,但我希望看到类似的东西
-rw-r--r-- 1 weiss Administ 5752 Apr 1 23:44 src/stata/ini-00.do
它适用于echo,但不适用于sed。 .ONESHELL 似乎也不起作用。
.SUFFIXES : .do .tmp
DOFILES = $(shell ls src/stata/*.do | sed 's/.do/.tmp/')
all: $(DOFILES)
.do.tmp:
LASTMOD=`ls -l $*`; echo $$LASTMOD; sed -e \
"s/Last modified:.*/Last modified: $$LASTMOD/g" $*.do > $*.tmp
更新:
按照@geekosaur、@William Pursell 和@eriktous 的建议应用更改后,它就像一个魅力:
.SUFFIXES : .do .tmp
DOFILES = $(shell ls src/stata/*.do | sed 's/\.do/\.tmp/')
all: $(DOFILES)
.do.tmp:
LASTMOD=`ls -l $<`; \
sed -e "s, Last modified:.*, Last modified: $$LASTMOD, g" $*.do > $*.tmp
【问题讨论】:
-
DOFILES程序集中的 sed 脚本可能不是您想要的,尽管它现在可能对您有用。.do中的.被解释为特殊字符。这将更改d.tmp.do中名为dodo.do的文件。 -
你说得对,谢谢...也改了。
标签: shell variables sed makefile