首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试使用python在shell脚本中追加字符串

尝试使用python在shell脚本中追加字符串
EN

Stack Overflow用户
提问于 2021-11-25 02:50:48
回答 1查看 30关注 0票数 0

我正在尝试更改此bash脚本中"dockerversion=“的值。

代码语言:javascript
运行
复制
# 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,目前在

代码语言:javascript
运行
复制
# 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脚本)

EN

回答 1

Stack Overflow用户

发布于 2021-11-25 04:08:17

我取走了你的代码,并对它进行了足够的修改,以完成你想让它做的事情。您需要做一些值验证,以便在执行到重写文件的最后部分之前记录并退出(如果没有重写内容,则不希望打开和重写)。

代码语言:javascript
运行
复制
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)

目前,对于您的内容,它输出:

代码语言:javascript
运行
复制
github version (1.23.0) > file version (1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70105255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档