My first thought is that somehow grep is not in the path for whatever uid you are using to run inspec, though that seems unlikely. Something you can try is using the inspec shell to see what is actually being returned. I have run into problems where I expect the output of a command to be one thing and it is another or is going to stdout instead of stdin. Weidness like that.
Try something similar to...
[root@compliance ~]# inspec shell -t ssh://email@example.com --password $PASSWORD
inspec> command('grep PASS_MIN_DAYS /etc/login.defs').stdout
=> "#\tPASS_MIN_DAYS\tMinimum number of days allowed between password changes.\nPASS_MIN_DAYS\t0\n"