我正在为这个问题而苦苦挣扎,并尝试了我看过的多个答案(Google / stackoverflow)。
使用bash脚本,我要替换:
image: quay.io/repo/someimage:sometag
与
image: quay.io/repo/someimage:newtag
请记住以下几点:
我的shell脚本如下:
TEXT="image: quay.io/repo/someimage:"
TEXT_NEW="image: quay.io/repo/someimage:${TAG}"
sed -i "s|$TEXT .*$|$TEXT_NEW|g" "docker-compose.yml"
我在这里尝试了多种方法,但没有一个或部分起作用: 这确实可以部分工作,但是由于某种原因,它只会将新TAG附加到旧TAG。不替换它。
sed -i -e "s|image: quay.io/repo/someimage:*| image: quay.io/repo/someimage:${TAG}|g" docker-compose.yml
这将引发错误。我猜是由于“ /”。
sed -i "/image: quay.io/repo/someimage:/c image: quay.io/repo/someimage:${TAG}" docker-compose.yml
答案 0 :(得分:0)
傻,但是空间是问题所在:
sed -i -e "s|$TEXT.*|$TEXT_NEW|g" docker-compose.yml
感谢@Beta的评论。