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

咨询Bash脚本里sed -i的作用、/s与/g含义及替换逻辑

Bash脚本中sed -i命令及/s、/g参数的解析

一、sed -i的作用

sed -i是sed工具的原地编辑选项,它会直接修改目标文件的内容,不需要将修改结果重定向到新文件。在你提供的脚本里,它的作用是把Redis哨兵配置文件sentinel.conf中的占位符替换为对应的环境变量值。

二、/s和/g的含义

  • /s:是sed替换命令的标识,全称是substitute,格式为s/匹配文本/替换文本/,用来指定执行文本替换操作。
  • /g:全称是global,表示全局替换。如果不加这个参数,sed只会替换每行中第一个匹配到的文本;加上后,会替换一行内所有匹配到的内容。在你的脚本场景里,因为每个占位符在配置文件中只出现一次,加不加/g效果一样,但加上是更规范的写法,避免后续配置中有多个相同占位符时漏替换。

三、具体的转换逻辑

原配置文件中的占位符

sentinel.conf里有三个带$的占位符:

port 26379

dir /tmp

sentinel monitor redismaster redis-master 6379 $SENTINEL_QUORUM
sentinel down-after-milliseconds redismaster $SENTINEL_DOWN_AFTER
sentinel parallel-syncs redismaster 1
sentinel failover-timeout redismaster $SENTINEL_FAILOVER

脚本的替换行为

脚本中的三个sed命令,分别读取三个环境变量($SENTINEL_QUORUM、$SENTINEL_DOWN_AFTER、$SENTINEL_FAILOVER)的实际值,将配置文件中对应的占位符全部替换。

举个实际例子:
假设环境变量的值为:

export SENTINEL_QUORUM=3
export SENTINEL_DOWN_AFTER=30000
export SENTINEL_FAILOVER=180000

替换后的sentinel.conf内容会变成:

port 26379

dir /tmp

sentinel monitor redismaster redis-master 6379 3
sentinel down-after-milliseconds redismaster 30000
sentinel parallel-syncs redismaster 1
sentinel failover-timeout redismaster 180000

最后脚本启动Redis哨兵服务,使用替换后的配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:15:30