It's somewhat unclear how far your requirements stretch, but in general most scripting languages have a CSV parser of their own, and can be used from the command line.
If there's an error in your CSV file, a parser should find it.
For example:
echo "one, two" | ruby -r csv -e 'CSV.parse(STDIN.read)'
results in the script producing no output and an exit code of 0
Whereas:
echo 'one, "two' | ruby -r csv -e 'CSV.parse(STDIN.read)'
Produces an exit code of 1
and the output:
/usr/lib/ruby/1.9.1/csv.rb:1925:in `block (2 levels) in shift': Illegal quoting in line 1. (CSV::MalformedCSVError)
from /usr/lib/ruby/1.9.1/csv.rb:1887:in `each'
from /usr/lib/ruby/1.9.1/csv.rb:1887:in `block in shift'
from /usr/lib/ruby/1.9.1/csv.rb:1849:in `loop'
from /usr/lib/ruby/1.9.1/csv.rb:1849:in `shift'
from /usr/lib/ruby/1.9.1/csv.rb:1791:in `each'
from /usr/lib/ruby/1.9.1/csv.rb:1805:in `to_a'
from /usr/lib/ruby/1.9.1/csv.rb:1805:in `read'
from /usr/lib/ruby/1.9.1/csv.rb:1379:in `parse'
from -e:1:in `<main>'
I don't know if its requirements are the same as Excel's.