背景

通过sed 执行替换命令时报错信息为

sed:-e 表达式 #1,字符 10:“s”的未知选项

场景

[zoms@chm aa]$ echo $DOCKER_IMAGE_TAG
10.45.80.1/zcm9/xx:xxxx
[zoms@chm aa]$ echo DOCKER_IMAGE_TAG| sed "s/DOCKER_IMAGE_TAG/$DOCKER_IMAGE_TAG/"
sed:-e 表达式 #1,字符 31:“s”的未知选项

分析

sed 替换可以通过 / # _ @ * 进行分割
环境变量中是含有反斜线的,这个在替换的时候会出现异常
可以使用# 或者 * @ 来替换

解决方案

[zoms@chm aa]$ echo $DOCKER_IMAGE_TAG
10.45.80.1/zcm9/xx:xxxx
[zoms@chm aa]$ echo DOCKER_IMAGE_TAG| sed "s*DOCKER_IMAGE_TAG*$DOCKER_IMAGE_TAG*"
10.45.80.1/zcm9/xx:xxxx
[zoms@chm aa]$ echo DOCKER_IMAGE_TAG| sed "s@DOCKER_IMAGE_TAG@$DOCKER_IMAGE_TAG@" 
10.45.80.1/zcm9/xx:xxxx

注意:避免变量中的特殊字符和分割符相同

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐