Hacker News new | ask | show | jobs
by webstrand 572 days ago
I... don't understand. I thought the whole reason for using [[ and breaking posix compatibility was to prevent just this kind of vulnerability. Why would bash do this.
1 comments

Instead of `if [[ "${num}" -eq 42 ]]`, bash expects `if [ "${num}" -eq 42 ]` or `if (( num==42 ))`.
or if test $num -eq 42, which is the most sensible way to do it in my view, since it really makes the point clear that what you're really evaluating is the exit status of the evaluated command

(and where '[' is simply an alias to 'test')

"if (( num==42 ))" can exectue code from $num too.
Typeset num as an integer.