我正在尝试跑步
sed -i "/$variable/c \$variable1' file.txt
但它没有显示文件中的任何更改:file.txt
。
但同样的命令,没有变量就可以正常工作:
sed -i "/variable/c \variable1' file.txt
答案1
像这样做:
sed -i "/$variable/c \\${variable}1" file.txt
变化:
\
如果a 之前有一个$
,它会使 shell$
在字符串中插入一个文字。相反,添加一个额外的内容\
来转义第一个,以便\
打印 at 文字。如果变量后面紧接着有字母或数字,请将名称括起来,
{...}
以区分变量和不存在的变量variable1
(如果变量不存在,shell 会将其扩展为空,而不是寻找更短的名称)。与您的引用保持一致,您以 a 开头
"
,所以不要以 a 结尾'
!无论如何,变量只能在双引号内扩展。
请注意,为了调试这样的事情,您可以使用echo
,查看输出,下面的命令将显示出了什么问题:
echo sed -i "/$variable/c \$variable1" file.txt
将其与;
echo sed -i "/$variable/c \\${variable}1" file.txt