4 ms·
While the other reply to you is correct, the actual answer to your question is No -- bash interprets leading 0s (zeros) in the C sense, it indicates octal not d
by gravitas 6y ago
While the other reply to you is correct, the actual answer to your question is No -- bash interprets leading 0s (zeros) in the C sense, it indicates octal not decimal. So this very small bash will fail for you:
X="08"
if [[ "$X" -eq 8 ]]; then
echo Y
fi
Use `bash -x` to run it in debug mode:
$ bash -x test.sh
+ X=08
+ [[ 08 -eq 8 ]]
test.sh: line 2: [[: 08: value too great for base (error token is "08")
This comes into play if you're dealing with things like IPv4 address, where it is technically allowable to have leading zeros, however by convention it's never done because of code traps which see those leading zeros as octal mode, not decimal.
- tempodox 6y agoYour example only demonstrates the effect of `[[`. If you replace it with `[` the error won't occur. In both cases double-quoting (or not) `$X` makes no difference in the context of your example.
- gravitas 6y ago[ is an external program called "test" and [[ is a bash builtin, they have many different behaviours beyond just trying to use one to prove the other wrong on a random internet comment.
- tempodox 6y agoI merely used that to show that the error message was tied to `[[` and not to the use of double quotes (which your parent comment was asking about).