我正在走一个包含鸡蛋的目录,将这些鸡蛋添加到鸡蛋中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.有比较版本字符串的优雅方法吗?
我想写一个cmp样功能,比较两个版本号,并返回-1,0或1根据自己的比较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) 我有一个版本号列表,比方说它们在一个文件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"参数使用各种排序命令,但是不能很好地理解它以完成它.任何帮助,将不胜感激.
嘿大家我有这个脚本,应该确保用户当前的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) 版本格式 - 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) 如果您没有使用最新版本的 docker 镜像(类似于npm outdated, gradlew dependencyUpdates gem outdated),如何在包含多个服务的 docker-compose 文件中找到较新版本的 docker 镜像的可用性
我在其他语言中看到了很多关于这个问题的答案,但我试图找到一种方法来比较作为字符串给出的2个版本号.例如
str1 = "141.1.23"
str2 = "141.1.22"
Run Code Online (Sandbox Code Playgroud)
我试图找到一种方法来比较字符串中的整数值,看看哪一个更大.(在这种情况下,str1会更大).我想过使用atoi和strtok的某些时候,但我知道我不能一次标记2个字符串.有什么建议?
我正在使用此脚本:
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) 我有一个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 脚本,它依赖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)