我正在尝试更改此bash脚本中"dockerversion=“的值。
# Docker Variables
containerid=$(docker ps -qf "name=vaultwarden")
imageid=$(docker images -q vaultwarden/server)
dockerversion=1
---------------
# Stop/RM Image
docker stop $containerid
docker rm $containerid
docker rmi $imageid我正在使用python,目前在
# Pull Portainer Version
url = 'https://github.com/dani-garcia/vaultwarden/releases/latest'
r = requests.get(url)
version = r.url.split('/')[-1]
# Pull Current Version
with open('vaultwarden-update', 'r') as vaultwarden:
fileversion = vaultwarden.readlines()
vcurrentversion = re.sub(r'dockerversion=', '', fileversion[14])
# Check who is higher
if version > vcurrentversion:
with open('vaultwarden-update', '') as vaultwarden:
for line in fileversion[14]:
vaultwarden.write(re.sub(re.escape(vcurrentversion), version))基本上,我想让python检查github版本,看看是否有变化,将这个数字与bash脚本变量进行比较,在bash-script中进行更新,然后运行脚本。
# Check who is higher将不起作用,因为我需要保留整个其他脚本文件。我只是在寻找通过python追加/更改值的方法。动态的。
有什么想法吗?
(这是我的第一个python脚本)
发布于 2021-11-25 04:08:17
我取走了你的代码,并对它进行了足够的修改,以完成你想让它做的事情。您需要做一些值验证,以便在执行到重写文件的最后部分之前记录并退出(如果没有重写内容,则不希望打开和重写)。
import re
import requests
from distutils.version import LooseVersion
# Pull Portainer Version
url = 'https://github.com/dani-garcia/vaultwarden/releases/latest'
r = requests.get(url)
github_version = r.url.split('/')[-1]
# Pull Current Version
with open('vaultwarden-update') as vaultwarden:
file_content = vaultwarden.read()
file_match = re.search(r'(dockerversion=([0-9.]*))', file_content)
file_version = file_match.group(2)
# Check who is higher
if LooseVersion(github_version) > LooseVersion(file_version):
print(f'github version ({github_version}) > file version ({file_version})')
with open('vaultwarden-update', 'w') as vaultwarden:
new_file_content = file_content.replace(file_match.group(1), f'dockerversion={github_version}')
vaultwarden.write(new_file_content)目前,对于您的内容,它输出:
github version (1.23.0) > file version (1)https://stackoverflow.com/questions/70105255
复制相似问题