javascript - 如何在 bash 的另一个命令中使用一个命令的结果?

标签 javascript linux bash shell unix

我试图在循环的每次迭代中用从 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/

相关文章:

javascript - 如何使用javascript使用azure函数从存储blob容器读取json文件?

regex - Sed 查找/内联替换,转义一些字符

linux gfortran gdb错误在启动程序退出时出现代码126

bash - 如何管理 jq 将 bool 值返回给 bash 以供将来继续

javascript - dotenv 没有正确赋值

javascript - 我怎样才能用angularjs重定向

linux - 是否有一个linux命令(沿着cat或dd行)允许我指定读取系统调用的偏移量?

c - 找不到 perl 命令

bash - 使用 shell 更新终端上显示的最后两行?

javascript - 为什么在使用 Function 构造函数进行动态代码评估时没有形成闭包?