程序代码
在shell脚本中 有如下代码,目的是在当前目录下的Dockerfile文件中,把该文件中的所有字符串python:3.7替换为传进来的第四个参数
sed -i 's/python:3.7/'''$4'''/g' ./Dockerfile
报错信息
跟踪日志发现 此处报错,报错信息为
sed: bad option in substitution expression
原因分析
原因为 传入的参数中 也含有 / ,和该正则表达式中的 / 冲突了。
解决方法
知道原因后就好解决了,将正则中的/ 使用其他来替换。如 ~
sed -i 's~python:3.7~'''$4'''~g' ./Dockerfile
其他注意事项
sed 替换变量时,使用单引号的方式,变量处应该用 ‘’‘$xxx’''的方式。不能直接使用 $xxx