Comment Re:I'll bite (Score 1) 265
Because there's no such thing as an assignment operator in bash. Everything is a string token at first (even numbers aren't number unless you're in arithmetic evaluation context), and then tokens get interpreted in various ways once split by whitespace. x = 3 happens to be three tokens, the first one being the command 'x', the other two being parameters '=' and '3' to command 'x'. x=3 is one token and it doesn't mean assignment unless it's in the command preface where assignments take place.
Tomatoe Tomato.
Actually I also do $(($x+1)) as per example in
http://pubs.opengroup.org/onli.... (Arithmetic section)
But I think I will have to revise that behaviour as it could allow circular problems or "arithmetic injection". Thanks for making me aware of this.