相关疑难解决方法(0)

如何比较Python中的版本号?

我正在走一个包含鸡蛋的目录,将这些鸡蛋添加到鸡蛋中sys.path.如果目录中有相同.egg的两个版本,我想只添加最新版本.

我有一个正则表达式r"^(?P<eggName>\w+)-(?P<eggVersion>[\d\.]+)-.+\.egg$从文件名中提取名称和版本.问题是比较版本号,这是一个字符串2.3.1.

因为我正在比较字符串,2种类型超过10,但这对于版本来说不正确.

>>> "2.3.1" > "10.1.1"
True
Run Code Online (Sandbox Code Playgroud)

我可以做一些拆分,解析,转换为int等,我最终会得到一个解决方法.但这是Python,而不是Java.有比较版本字符串的优雅方法吗?

python version string-comparison

205
推荐指数
8
解决办法
9万
查看次数

Python中的版本号比较

我想写一个cmp样功能,比较两个版本号,并返回-1,01根据自己的比较valuses.

  • -1如果版本A早于版本B,则返回
  • 返回0如果版本A和B是等价的
  • 1如果版本A比版本B更新,则返回

每个子部分应该被解释为一个数字,因此1.10> 1.1.

期望的功能输出是

mycmp('1.0', '1') == 0
mycmp('1.0.0', '1') == 0
mycmp('1', '1.0.0.1') == -1
mycmp('12.10', '11.0.0.0.0') == 1
...
Run Code Online (Sandbox Code Playgroud)

这是我的实施,开放改进:

def mycmp(version1, version2):
    parts1 = [int(x) for x in version1.split('.')]
    parts2 = [int(x) for x in version2.split('.')]

    # fill up the shorter version with zeros ...
    lendiff = len(parts1) - len(parts2)
    if lendiff > 0:
        parts2.extend([0] * lendiff)
    elif lendiff < 0:
        parts1.extend([0] …
Run Code Online (Sandbox Code Playgroud)

python string-comparison

95
推荐指数
6
解决办法
5万
查看次数

Unix版本号

我有一个版本号列表,比方说它们在一个文件versions.txt中

1.2.100.4
1.2.3.4
10.1.2.3
9.1.2.3
Run Code Online (Sandbox Code Playgroud)

我希望对它们进行排序,以便按版本排序.即:

1.2.3.4
1.2.100.4
9.1.2.3    
10.1.2.3
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用"k"参数使用各种排序命令,但是不能很好地理解它以完成它.任何帮助,将不胜感激.

unix sorting

62
推荐指数
4
解决办法
2万
查看次数

BASH比较版本号

嘿大家我有这个脚本,应该确保用户当前的PHP版本在一定范围之间,虽然它应该工作,有一个错误,使它认为版本超出范围,有人可以看看,告诉我我能做些什么来解决它?

function version { echo "$@" | gawk -F. '{ printf("%d.%d.%d\n", $1,$2,$3); }'; }

phpver=`php -v |grep -Eow '^PHP [^ ]+' |gawk '{ print $2 }'`

if [ $(version $phpver) > $(version 5.2.13) ] || [ $(version $phpver) < $(version 5.2.13) ]; then
  echo "PHP Version $phpver must be between 5.2.13 - 5.3.15"
  exit
fi
Run Code Online (Sandbox Code Playgroud)

bash shell

33
推荐指数
2
解决办法
2万
查看次数

如何比较unix ksh shell中某些产品的版本?

版本格式 - XXXX
其中X - 编号.
比较两个版本的最佳方法是什么?
我使用以下代码:

compareVersions()
{
  VER_1=$1
  VER_2=$2

  print -R "$VER_1"| IFS=. read v1_1 v1_2 v1_3 v1_4
  print -R "$VER_2"| IFS=. read v2_1 v2_2 v2_3 v2_4

  RESULT="0"

  if [[ "${v1_1}" -lt "${v2_1}" ]]
  then
     RESULT="-1"
  elif [[ "${v1_1}" -gt "${v2_1}" ]]
  then
     RESULT="1"
  elif [[ "${v1_2}" -lt "${v2_2}" ]]
  then
     RESULT="-1"
  elif [[ "${v1_2}" -gt "${v2_2}" ]]
  then
     RESULT="1"
  elif [[ "${v1_3}" -lt "${v2_3}" ]]
  then
     RESULT="-1"
  elif [[ "${v1_3}" -gt "${v2_3}" ]]
  then
     RESULT="1"
  elif …
Run Code Online (Sandbox Code Playgroud)

unix shell ksh

9
推荐指数
2
解决办法
3837
查看次数

如何在 docker-compose 中找到更新版本的 docker 镜像的可用性

如果您没有使用最新版本的 docker 镜像(类似于npm outdated, gradlew dependencyUpdates gem outdated),如何在包含多个服务的 docker-compose 文件中找到较新版本的 docker 镜像的可用性

docker docker-compose

8
推荐指数
1
解决办法
113
查看次数

比较c中的版本号

我在其他语言中看到了很多关于这个问题的答案,但我试图找到一种方法来比较作为字符串给出的2个版本号.例如

str1 = "141.1.23"
str2 = "141.1.22"
Run Code Online (Sandbox Code Playgroud)

我试图找到一种方法来比较字符串中的整数值,看看哪一个更大.(在这种情况下,str1会更大).我想过使用atoi和strtok的某些时候,但我知道我不能一次标记2个字符串.有什么建议?

c string-comparison version-numbering

6
推荐指数
3
解决办法
3755
查看次数

检查我们在 bash 脚本中是否需要版本软件的最佳方法

这是检查我们在 bash 脚本中是否有最低要求版本软件的最佳方法。例如 git 2.16.2

bash

5
推荐指数
1
解决办法
862
查看次数

比较Zsh中的版本字符串

我正在使用此脚本:

if [[ -f /usr/bin/atom ]]; then
  ATOM_INSTALLED_VERSION=$(rpm -qi atom | grep "Version" |  cut -d ':' -f 2 | cut -d ' ' -f 2)
else
  ATOM_INSTALLED_VERSION=""
fi
ATOM_LATEST_VERSION=$(wget -q "https://api.github.com/repos/atom/atom/releases/latest"  -O - | grep -E "https.*atom-amd64.tar.gz" | cut -d '"' -f 4 | cut -d '/' -f 8 | sed 's/v//g')

if [[ "$ATOM_INSTALLED_VERSION" -lt "$ATOM_LATEST_VERSION" ]]; then
  sudo dnf install -y https://github.com/atom/atom/releases/download/v${ATOM_LATEST_VERSION}/atom.x86_64.rpm
fi
Run Code Online (Sandbox Code Playgroud)

检查Atom升级并安装(如果可用)。问题是测试:

[[ "$ATOM_INSTALLED_VERSION" -lt "$ATOM_LATEST_VERSION" ]]
Run Code Online (Sandbox Code Playgroud)

返回:

zsh: bad floating point constant
Run Code Online (Sandbox Code Playgroud)

其中(显示输入和输出):

$ …
Run Code Online (Sandbox Code Playgroud)

conditional zsh

3
推荐指数
1
解决办法
484
查看次数

比较 shell 脚本中的两个版本号

我有一个file1如下所示的文件,其中包含当前版本号和预期版本号:

CurrV:1.5.2
ExpecV:1.8.1
Run Code Online (Sandbox Code Playgroud)

我想编写一个 bash 脚本来比较这两个值,如果ExpecV>=CurrV那么我应该echo SUCCESS,否则我应该echo FAILURE

到目前为止我已经写了这个东西,但不知道如何继续:

#!/bin/bash
 ## Code already written to fetch `ExpecV` and `CurrV` from `file1`
 echo $ExpecV | grep $CurrV > /dev/null
 if [ $? -eq 0 ]
    then
        echo SUCCESS
    else
        echo FAILURE
 fi
Run Code Online (Sandbox Code Playgroud)

bash shell awk grep sed

3
推荐指数
1
解决办法
5167
查看次数

从 bash 脚本检查 vim 版本和 python 支持

我有一个 bash 脚本,它依赖vim于至少版本7.4并与 python 一起安装。我需要检查上述条件是否匹配,如果不匹配则退出并要求用户更新他们的 vim。

到目前为止,我能想到的就是下面的内容

has_vim = command -v vim >/dev/null  

if ! $has_vim; then
  echo "must have vim installed."
  exit 1
fi

// Here I want do as the following pseudo code
vim_info = $(vim --version | grep python)

// suggest me if there is another way
vim_version = // find version info from $vim_info
has_python_support = // find python support from $vim_info

if ! $vim_version >= 7.4 && ! has_python_support; then
  echo …
Run Code Online (Sandbox Code Playgroud)

vim bash

2
推荐指数
1
解决办法
1181
查看次数