尝试编写包含嵌套美元变量的bash脚本,但我无法使其工作:
#!/bin/bash
sed '4s/.*/$(grep "remote.*$1" /home/txtfile)/' /home/target
错误说:
sed / -e表达式#1,字符30:未知选项'
问题似乎来自$ 1,需要用从bash调用传递的参数替换,然后整个$(...)
需要被命令调用替换,所以我们用字符串替换目标行4输出
答案 0 :(得分:0)
当放入单引号内时,不会进行变量扩展和命令替换,而是使用双引号:
sed "4s/.*/$(grep "remote.*$1" /home/txtfile)/" /home/target
答案 1 :(得分:0)
你的方法是错误的,做你想做的正确的方法只是一个命令,就像这样(取决于你可能的$1
值和输入文件内容,你没有向我们展示):
awk -v tgt='remote.*$1' '
NR==FNR { if ($0 ~ tgt) str = str $0 ORS; next }
FNR==4 { printf "%s", str; next }
{ print }
' /home/txtfile /home/target