You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash变量替换文件中的字符串?sed命令执行异常

Bash变量替换文件字符串的正确方法

问题出在单引号的特性:Bash中,单引号会完全保留里面的所有字符,不会解析变量(比如$i),所以你的两条命令里的$i都被当成了普通字符串输出。

解决方法有两种:

  • 使用双引号包裹sed的替换表达式,这样Bash会先解析变量再传给sed:
i="1"
sed -i "s/%q/0$i/g" file

执行后,$i会被替换为它的值1,最终文件里的%q会变成01。

  • 如果需要保留部分单引号的场景,可以用单引号拼接变量:
i="1"
sed -i 's/%q/0'"$i"'/g' file

这里把替换字符串拆成三部分:'s/%q/0'(单引号包裹的固定部分)、"$i"(双引号包裹的变量,会被解析)、'/g'(单引号包裹的固定部分),拼接后同样能正确替换。

内容的提问来源于stack exchange,提问作者Elena Greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:48:26