We must use [ ... ] in gsu_is_a_number() because arithmetic expansion
with ((...)) undergoes parameter and variable expansion. For example
x=foo
gsu_is_a_number "$x"
will pass "foo" to gsu_is_a_number() where the expression (("$1"))
tries to expand the (non-existing) variable foo, aborting the script
if set -u was given.
This bug was introduced a few month ago in commit
44860e92 (Use modern
style arithmetic evaluation everwhere).
gsu_is_a_number()
{
result="$1"
- if (("$1" == "$1")) &> /dev/null; then
+ if [ "$1" -eq "$1" ] &> /dev/null; then
ret=$GSU_SUCCESS
else
ret=-$E_GSU_NOT_A_NUMBER