same reason as this, i suspect: awk 'END {print 1 * "hello"}' /dev/null 0 the rules aren't really given in the manual page except perhaps by implication in the BUGS, but in a context where a number is expected (operand of arithmetic operator) the string is converted to a number, and "hello" or "foo" are both zero, but "5hello" is 5. exit takes an expression but doesn't say whether it's integer or string (but it's integer, as usual on Unix).