-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2170
Vidar Holen edited this page Aug 31, 2021
·
4 revisions
read -r n
if [ n -lt 0 ]
then
echo "bad input"
fi
if [ "$USER" -eq root ]
then
echo "You are root"
fi
read -r n
if [ "$n" -lt 0 ] # Numerical comparison
then
echo "bad input"
fi
if [ "$USER" = root ] # String comparison
then
echo "You are root"
fi
You are comparing a string value with a numerical operator, such as -eq
, -ne
, -lt
or -gt
.
In [[ .. ]]
, this would automatically dereference the string, looking to see if there are variables by that name.
In [ .. ]
, which you are using, the string is just treated as an invalid number.
If you want to compare numbers, expand yourself (e.g. use $var
instead of var
, or $((n+1))
instead of n+1
). If you are trying to compare strings and not numbers, use =
, !=
\<
or \>
instead.
None.