![如何 sed -i '`[echo $var]`i word' 文件?](https://linux22.com/image/9218/%E5%A6%82%E4%BD%95%20sed%20-i%20'%60%5Becho%20%24var%5D%60i%20word'%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
代码:
pos=2;
printf "Masi \nwas \nhere" > /tmp/1
sed -i '`echo $pos`i huhu' /tmp/1
预期输出:
马西 呼呼 曾是 这里
电流输出:
sed: -e expression #1, char 1: unknown command: ``'
答案1
不计算撇号中的表达式(也不计算子 shell 或变量)。您需要使用普通引号:
$ pos=2;
$ printf "Masi \nwas \nhere" > /tmp/1
$ sed -i "`echo $pos`i huhu" /tmp/1
$ cat /tmp/1
Masi
huhu
was
here
这相当于
$ sed -i "${pos}i huhu" /tmp/1
(没有子外壳)