Compare
num_compare¶
Compare two integers. Mirrors the convention used in numbers/version_compare.sh: exit 0 = equal, exit 1 = first greater, exit 2 = first less. This makes it easy to use in case statements alongside version_compare.
Example¶
num_compare 5 3; echo $? # => 1 (5 > 3)
num_compare 3 5; echo $? # => 2 (3 < 5)
num_compare 4 4; echo $? # => 0 (equal)
Arguments¶
- $1 (int): First integer
- $2 (int): Second integer
Exit codes¶
- 0: Equal; 1 First > second; 2 First < second
num_compare_float¶
Compare two floating-point numbers using awk (no bc dependency). Returns the same exit code convention as num_compare.
Example¶
num_compare_float 3.14 2.72; echo $? # => 1
num_compare_float 1.0 1.0; echo $? # => 0
Arguments¶
- $1 (float): First number
- $2 (float): Second number
Exit codes¶
- 0: Equal; 1 First > second; 2 First < second
numbers_version_compare¶
Compare two dot-separated version numbers.
Example¶
numbers_version_compare "2.1.0" "2.0.9" # => exit 1 (A > B)
numbers_version_compare "1.0" "1.0.0" # => exit 0 (equal)
numbers_version_compare "1.0" "2.0" # => exit 2 (A < B)
Arguments¶
- $1 (string): Version A (e.g. "2.1.0")
- $2 (string): Version B (e.g. "2.0.9")
Exit codes¶
- 0: A == B
- 1: A > B
- 2: A < B
- 3: Missing arguments
- 4: Invalid format (non-numeric segments)
semver_to_int¶
Convert a semantic version string to a zero-padded integer for numeric comparison. Strips non-numeric/non-dot characters, then formats as MMMMNNPP (major, 2-digit minor, 2-digit patch).
Example¶
semver_to_int "1.0.2k-fips" # => 10002
semver_to_int "2.31.0" # => 23100
Arguments¶
- $1 (string): Version string (e.g. "1.0.2k-fips" or "openssl 1.0.2")
Exit codes¶
- 0: Always
Output on stdout¶
- Integer representation of the version