-
Notifications
You must be signed in to change notification settings - Fork 1.9k
SC2255
Vidar Holen edited this page Oct 13, 2019
·
1 revision
[ ] does not apply arithmetic evaluation. Evaluate with $((..)) for numbers, or use string comparator for strings.
[ 2*3 -eq array[i] ][ $((2*3)) -eq $((array[i])) ]When using [[ .. ]] with numerical comparators (-eq, -lt, etc), the value on either side will be evaluated as an arithmetic expression. This means that 2*3 will be evaluated to 6, and x will be evaluated to the contents of the variable $x.
When using [ .. ], this does not happen. 2*3 and x will both be considered invalid numbers. Instead, use e.g. $((2*3)) to evaluate the expression before passing it to [ .. ].
Alternatively, if the expression should be considered a string, quote the expression and use a string comparison operator like = and !=.
None
- Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!