* bash [OK] Input: 2 -> Output: (Expect: ) [OK] Input: .2 -> Output: (Expect: ) [OK] Input: ..2 -> Output: (Expect: ) [OK] Input: 2.1 -> Output: 2.1 (Expect: 2.1) [OK] Input: 2..1 -> Output: (Expect: ) [OK] Input: version2 -> Output: (Expect: ) [OK] Input: version2.1 -> Output: 2.1 (Expect: 2.1) [OK] Input: 22.11 -> Output: 22.11 (Expect: 22.11) [OK] Input: 2.1.0 -> Output: 2.1.0 (Expect: 2.1.0) [OK] Input: 2.1.10 -> Output: 2.1.10 (Expect: 2.1.10) [OK] Input: 2.10.0 -> Output: 2.10.0 (Expect: 2.10.0) [OK] Input: 22.1.0 -> Output: 22.1.0 (Expect: 22.1.0) [OK] Input: 33.22.11 -> Output: 33.22.11 (Expect: 33.22.11) [OK] Input: v1.2-3.4.5.6.7 -> Output: 1.2 (Expect: 1.2) [OK] Input: v1.2.3.4.5.6.7.8 -> Output: 1.2.3 (Expect: 1.2.3) [OK] Input: v1.2.3-4.5.6-7 -> Output: 1.2.3 (Expect: 1.2.3) [OK] Input: 2.1.0-39-g4e1ede -> Output: 2.1.0 (Expect: 2.1.0) [OK] Input: v2.1.0-39-g4e1ede1 -> Output: 2.1.0 (Expect: 2.1.0) * dash [OK] Input: 2 -> Output: (Expect: ) [OK] Input: .2 -> Output: (Expect: ) [OK] Input: ..2 -> Output: (Expect: ) [OK] Input: 2.1 -> Output: 2.1 (Expect: 2.1) [OK] Input: 2..1 -> Output: (Expect: ) [OK] Input: version2 -> Output: (Expect: ) [OK] Input: version2.1 -> Output: 2.1 (Expect: 2.1) [OK] Input: 22.11 -> Output: 22.11 (Expect: 22.11) [OK] Input: 2.1.0 -> Output: 2.1.0 (Expect: 2.1.0) [OK] Input: 2.1.10 -> Output: 2.1.10 (Expect: 2.1.10) [OK] Input: 2.10.0 -> Output: 2.10.0 (Expect: 2.10.0) [OK] Input: 22.1.0 -> Output: 22.1.0 (Expect: 22.1.0) [OK] Input: 33.22.11 -> Output: 33.22.11 (Expect: 33.22.11) [OK] Input: v1.2-3.4.5.6.7 -> Output: 1.2 (Expect: 1.2) [OK] Input: v1.2.3.4.5.6.7.8 -> Output: 1.2.3 (Expect: 1.2.3) [OK] Input: v1.2.3-4.5.6-7 -> Output: 1.2.3 (Expect: 1.2.3) [OK] Input: 2.1.0-39-g4e1ede -> Output: 2.1.0 (Expect: 2.1.0) [OK] Input: v2.1.0-39-g4e1ede1 -> Output: 2.1.0 (Expect: 2.1.0) * busybox(static-sh) [OK] Input: 2 -> Output: (Expect: ) [OK] Input: .2 -> Output: (Expect: ) [OK] Input: ..2 -> Output: (Expect: ) [OK] Input: 2.1 -> Output: 2.1 (Expect: 2.1) [OK] Input: 2..1 -> Output: (Expect: ) [OK] Input: version2 -> Output: (Expect: ) [OK] Input: version2.1 -> Output: 2.1 (Expect: 2.1) [OK] Input: 22.11 -> Output: 22.11 (Expect: 22.11) [OK] Input: 2.1.0 -> Output: 2.1.0 (Expect: 2.1.0) [OK] Input: 2.1.10 -> Output: 2.1.10 (Expect: 2.1.10) [OK] Input: 2.10.0 -> Output: 2.10.0 (Expect: 2.10.0) [OK] Input: 22.1.0 -> Output: 22.1.0 (Expect: 22.1.0) [OK] Input: 33.22.11 -> Output: 33.22.11 (Expect: 33.22.11) [OK] Input: v1.2-3.4.5.6.7 -> Output: 1.2 (Expect: 1.2) [OK] Input: v1.2.3.4.5.6.7.8 -> Output: 1.2.3 (Expect: 1.2.3) [OK] Input: v1.2.3-4.5.6-7 -> Output: 1.2.3 (Expect: 1.2.3) [OK] Input: 2.1.0-39-g4e1ede -> Output: 2.1.0 (Expect: 2.1.0) [OK] Input: v2.1.0-39-g4e1ede1 -> Output: 2.1.0 (Expect: 2.1.0) * Major/Minor/Patch version Input: v2.1.0-39-g4e1ede1 -> Output: Major:2, Minor:1, Patch:0 grep (GNU grep) 3.4