为什么sed不能在我的bash脚本中工作?

Mat*_*ler 5 bash sed

这是我的代码.我只是想复制一些文件并替换我的Makefile中的一行.参数$ 1只是我的新.tex文件的名称.

#!/bin/bash                                
pwd="./"                                   
tex=".tex"                                 
pwd=$1$tex                                 
cp ~/TeX/matt.sty .                        
cp ~/TeX/mon.tex $pwd                      
cp ~/TeX/Makefile .                        

sed="sed 's/mon.tex/"$1$tex"/g' Makefile > Makefile"           
$sed
Run Code Online (Sandbox Code Playgroud)

我有以下错误: sed: 1: "'s/mon.tex/salut.tex/g'": invalid command code '

ps:我在Mac OS X上使用sed.(所以它是bsd sed)

Kar*_*ath 6

sed的第一个参数是字面意思's/mon.tex/"$1$tex"/g'(带单引号).显然sed无法将其解析为命令.

删除单引号可以解决该问题,但重定向(>)仍然无法正常工作.

只需直接运行sed命令($sed变量的重点是什么?我不明白)

注意:要使用sed修改文件,请使用sed -i.重定向到您正在处理的同一文件将无法正常工作.