> > + pos=$(printf "%s" "${2%^*}" | wc -c) # error position > > + command=$(printf "%s" "$2" | tr -d ^) You may want to put all the $(...) inside "" to avoid field splitting (not relevant to a shell assignment with modern shells) and filename globbing. > > echo "Test command: $command" > > echo > error_log > > - (! echo "$command" >> "$3" ) 2> /dev/null > > + (! printf "%s" "$command" >> "$3" ) 2> /dev/null WTF is the (! for ?? The (...) is a subshell. And ! inverts the exit status. Neither is needed at all. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)