Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个包含脚本的文件夹,其名称模式是脚本版本UPDATE[x.y.z]在哪里。x.y.z
UPDATE[x.y.z]
x.y.z
我需要的是一个 bash 脚本,它运行按其版本排序的脚本,因此字母排序不好。
例如UPDATE1.11.0应该在UPDATE1.2.3.
UPDATE1.11.0
UPDATE1.2.3
有没有我可以使用的比较器来指示排序顺序?如果没有,还能怎么做?
如果您没有 GNU 排序(即您在 OSX 或 FreeBSD 或 NetBSD 中),您可以通过对不同字段进行排序来伪造它。
[ghoti ~]$ printf "foo1.2.3\nfoo1.11.0\nfoo1.4.1\nfoo1.4.0\n" | sort -nt. -k2,3 foo1.2.3 foo1.4.0 foo1.4.1 foo1.11.0 [ghoti ~]$
这错过了主要版本号,因为它不是由点分隔的。但无论如何它可能对你有用。
如果你有 GNUsort或其他支持它的版本,你可以使用版本排序。
sort
sort -V
或者
sort --version-sort
另外,在我的回答中,我发布了一个比较版本的脚本。