0

我正在使用 Cygwin,并打算在 Unix 中使用相同的脚本。我有一个文件done.txt,其中包含34523. 我想用替换文件?中的每个出现并将输出写入文件。但它并没有做预期的工作,而是直接在文件中分配。在这件事上的任何帮助都会很大。找到脚本:CreateView.sql34523CreateViewFinal.sql$valueCreateViewFinal.sql

脚本:

sed '14 ! d' result.txt >> done.txt
value=$(<done.txt)
echo "$value"
sed 's/?/$value/' CreateView.sql >> CreateViewFinal.sql

在做完所有事情之后,我得到CreateViewFinal.sql

create view Latest_Cust_Records_Final  as
select cust.* from MCT cust,goldencopy g,principalkey p
where g.catalogid=$value and cust.cproductkeyid=g.productkey  and cust.cmodversion=g.version 
and p.catalogid=$value and p.active='Y' and cust.cproductkeyid=p.productkeyid;

所以我希望它$value应该done.txtCreateViewFinal.txt. 期望的结果应该是这样的

create view Latest_Cust_Records_Final  as
select cust.* from MCT cust,goldencopy g,principalkey p
where g.catalogid=34523 and cust.cproductkeyid=g.productkey  and cust.cmodversion=g.version 
and p.catalogid=34523 and p.active='Y' and cust.cproductkeyid=p.productkeyid;
4

1 回答 1

1

在 sed 调用中使用双引号而不是单引号:

sed "s/?/$value/" CreateView.sql >> CreateViewFinal.sql

使用单引号时,shell 变量引用如$value不会被替换。

于 2013-06-20T13:21:55.843 回答