我试图在循环的每次迭代中用从 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 的第 1、2、3、4 行等 1p、2p、3p、4p 等
替换第 10 行Gruntfile.js。但是
x=`sed -n '$ip' finaltest.txt
对于 $i 不能正常工作,它会报错。我也尝试了 "$(i)p"
但仍然没有。我应该修改什么?
最佳答案
使用这个 sed 命令:
sed -i "10s~.*~$x~" Gruntfile.js
- 对 shell 使用双引号以允许扩展
$x
- 使用备用正则表达式分隔符
~
,因为您的$x
值中包含/
。
编辑:基于您编辑的问题。您的第一部分也需要在此处用双引号引起来:
x=$(sed "$iq;d" finaltest.txt)
关于javascript - 如何在 bash 的另一个命令中使用一个命令的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28610237/