测试 yad 版本是否 >= 特定版本号

Win*_*nix 4 versions bash version-control yad

我需要一个脚本来检查yad(和其他程序)版本号是否 >= 特定数字。例如我有:

$ yad --version
0.40.0 (GTK+ 3.24.8)

$ gedit --version
gedit - Version 3.32.0

$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
  • Ubuntu 16.04 和 19.04 之间添加了新功能
  • 对于gedit,新版本中失去了传递窗口几何形状的能力
  • bash使测试变得复杂,因为版本号位于第一行的中间。

并非所有程序(如 bash)都存在环境变量:

$ echo $BASH_VERSION
5.0.3(1)-release
Run Code Online (Sandbox Code Playgroud)

ste*_*ver 5

您可能想尝试 GNUsort-V( --version-sort) 以及-C( --check=quiet):

$ echo $BASH_VERSION
4.4.20(1)-release
Run Code Online (Sandbox Code Playgroud)

0然后如果版本至少是给定版本则返回(true),1否则返回 (false):

$ printf '%s\n%s\n' "$BASH_VERSION" "4.3" | sort -rVC ; echo $?
0

$ printf '%s\n%s\n' "$BASH_VERSION" "4.4.20(2)" | sort -rVC ; echo $?
1
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,我大约在同一时间发布了两个类似的问题。这个答案非常适合其他问题:https://askubuntu.com/questions/916976/check-if-bash-version-is-given-version-number (2认同)