从文件读取值后,无法在Unix中分配该值
我正在使用Cygwin,并打算在Unix中使用相同的脚本。我有一个文件从文件读取值后,无法在Unix中分配该值,unix,sed,Unix,Sed,我正在使用Cygwin,并打算在Unix中使用相同的脚本。我有一个文件done.txt,其中包含的值为34523。我想用34523替换CreateView.sql文件中出现的每个?并将输出写入CreateViewFinal.sql文件。但它并不是在做预期的工作,而是在CreateViewFinal.sql文件中直接分配$value。这件事上的任何帮助都将是巨大的。查找脚本: 脚本: sed '14 ! d' result.txt >> done.txt value=$(<don
done.txt
,其中包含的值为34523
。我想用34523
替换CreateView.sql
文件中出现的每个?
并将输出写入CreateViewFinal.sql
文件。但它并不是在做预期的工作,而是在CreateViewFinal.sql
文件中直接分配$value
。这件事上的任何帮助都将是巨大的。查找脚本:
脚本:
sed '14 ! d' result.txt >> done.txt
value=$(<done.txt)
echo "$value"
sed 's/?/$value/' CreateView.sql >> CreateViewFinal.sql
因此我希望$value
应该从done.txt
中获取,并分配到CreateViewFinal.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;
在sed调用中使用双引号而不是单引号:
sed "s/?/$value/" CreateView.sql >> CreateViewFinal.sql
当使用单引号时,shell变量引用(如
$value
)将不会被替换。您好,谢谢您的宝贵建议……但它现在说的是“Oracle Database 11g Enterprise Edition 11.2.0.1.0-64位生产版,带有分区、OLAP、数据挖掘和实际应用程序测试选项,其中g.catalogid=和cust.cproductkeyid=g.productkey和cust.cmodversion=g.version*错误,第3行:ORA-00936:缺少表达式。”“基本上,它现在什么也不返回。它们在将更改为sed”s/?/($value)/“CreateView.sql>>CreateViewFinal.sql后工作
sed "s/?/$value/" CreateView.sql >> CreateViewFinal.sql