String comparison: Difference between revisions
Content added Content deleted
(yet more lua) |
(Added bash solution) |
||
Line 446:
=={{header|UNIX Shell}}==
Traditional bourne shell (which used the 'test' command for comparisons) had no way of doing lexical comparisons.
<lang sh>#!/bin/sh
Line 464 ⟶ 466:
# However this may not be the case if other tools, such as awk are the slave instead of test.</lang>
Bash and other POSIX shells do support lexical comparisons:
<lang bash>
#!/bin/bash
isint() {
printf "%d" $1 >/dev/null 2>&1
}
compare() {
local a=$1
local b=$2
[[ $a = $b ]] && echo "'$a' and '$b' are lexically equal"
[[ $a != $b ]] && echo "'$a' and '$b' are not lexically equal"
[[ $a > $b ]] && echo "'$a' is lexically after '$b'"
[[ $a < $b ]] && echo "'$a' is lexically before '$b'"
shopt -s nocasematch # Turn on case insensitivity
[[ $a = $b ]] && echo "'$a' and '$b' are equal with case insensitivity"
shopt -u nocasematch # Turn off case insensitivity
# If args are numeric, perform some numeric comparisions
if isint $a && isint $b
then
[[ $a -eq $b ]] && echo "$a is numerically equal to $b"
[[ $a -gt $b ]] && echo "$a is numerically greater than $b"
[[ $a -lt $b ]] && echo "$a is numerically less than $b"
fi
echo
}
compare foo foo
compare foo bar
compare FOO foo
compare 24 123
compare 50 20
</lang>
{{omit from|Brlcad}}
|