KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am essentially trying to implement a function which asserts the failure (non-zero exit code) of another command, and prints a message when it fails. Here is my function: function assert_fail () { COMMAND=$@ if [ `$COMMAND; echo $?` -ne 0 ]; then echo "$COMMAND failed as expected." else echo "$COMMAND didn't fail" fi } # This works as expected assert_fail rm nonexistent # This works too assert_fail rm nonexistent nonexistent2 # This one doesn't work assert_fail rm -f nonexixtent As soon as I add options to the command, it doesn't work. Here is the output of the above: rm: cannot remove `nonexistent': No such file or directory rm nonexistent failed as expected. rm: cannot remove `nonexistent': No such file or directory rm: cannot remove `nonexistent2': No such file or directory rm nonexistent nonexistent2 failed as expected. rm -f nonexistent didn't fail I have tried putting double quotes around the commands, to no avail. I would expect the third invocation in the above to produce similar output to the other two. I appreciate any/all help!
Tags (comma-separated)
Save Edits
Cancel