pushd tests
mkdir -p $RPM_BUILD_ROOT%{_bindir}
for foo in $(make check-programs) ; do
install -m 0755 .libs/$foo $RPM_BUILD_ROOT%{_bindir}
done
popd
sed命令:
sed -i 's@for foo in $(make check-programs)@for foo in dristat drmstat@g'
O / P:
for foo in dristat drmstat$(make check-programs) ; do
预期:
for foo in dristat drmstat ;do
有人能告诉我我做错了吗?
答案 0 :(得分:2)
Re: sed -i的@ for foo in $(make check-programs)@for foo in dristat drmstat @ g'
我怀疑这不是你的实际剧本。你有机会获得双引号吗?
# as in:
sed -i "s@for foo in $(make check-programs)@for foo in dristat drmstat@g"
现在你有一个未转义的命令替换:$(make ...)
。假设这在您正在执行此sed作业的环境中运行,并且不生成任何输出。那个论点的扩展是:
s@for foo in @for foo in dristat drmstat@g
这将产生:
for foo in dristat drmstat$(make check-programs) ; do
答案 1 :(得分:0)
请获取文件cat file1|sed 's/\$\(make check-programs\)//g'
中的数据,然后使用此命令:
\
$
和(
之间以及programs
和)
之间有{{1}}
感谢。