我试图在循环的每次迭代中用从finaltest.txt中提取的行替换我的Gruntfile.js的第10行。但是,在下面的代码之后发生的事情是在我的Gruntfile.js中,第10行被字符串$x
取代而不是它包含的值。这是我的代码:
#!/bin/bash
for i in {1..354}
do
x=`sed -n '$ip' finaltest.txt`
sed -i '10s/.*/$x/' Gruntfile.js
grunt
done
此外,grunt
命令用于运行Gruntfile.js
。我在这里做错了什么?
编辑:$ x的问题已在下面给出的答案中解决,sed -i "10s~.*~$x~" Gruntfile.js
。
但是,剩下的唯一部分是,我想要使用finaltest.txt的1p,2p,3p,4p,etc
等行1,2,3,4等来替换Gruntfile.js的第10行。但是
x=`sed -n '$ip' finaltest.txt
对于$ i无法正常工作,它会出错。我也试过"$(i)p"
但仍然没有。我应该修改什么?
答案 0 :(得分:1)
使用此sed命令:
sed -i "10s~.*~$x~" Gruntfile.js
$x
~
,因为您的$x
值中包含/
。编辑:根据您编辑过的问题。你的第一部分也需要在这里加双引号:
x=$(sed "$iq;d" finaltest.txt)