gpt4 book ai didi

shell - 制作 : referencing shell variables in sed call

转载 作者:行者123 更新时间:2023-12-04 16:18:01 25 4
gpt4 key购买 nike

我正在使用 make 并且我想在 sed 中引用一个 shell 变量。然而,在sed内-调用$$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

最佳答案

你真的在那里使用双引号吗?我希望单引号的行为;但是用双引号,你会得到 sed语法错误,除非你转义斜杠或使用不同的模式分隔符(我通常使用 , 当我知道会涉及 / 时,就像路径名一样)。

LASTMOD=$$(ls -l "$*"); \
sed "s,Last modified:.*,Last modified: $$LASTMOD,g" "$*.do" >"$*.tmp"

关于shell - 制作 : referencing shell variables in sed call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com