Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从文件读取值后,无法在Unix中分配该值_Unix_Sed - Fatal编程技术网

从文件读取值后,无法在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

我正在使用Cygwin,并打算在Unix中使用相同的脚本。我有一个文件
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