Bash if [ false ] ; returns true
问题 Been learning bash this week and ran into a snag. #!/bin/sh if [ false ]; then echo "True" else echo "False" fi This will always output True even though the condition would seem to indicate otherwise. If I remove the brackets [] then it works, but I do not understand why. 回答1: You are running the [ (aka test ) command with the argument "false", not running the command false . Since "false" is a non-empty string, the test command always succeeds. To actually run the command, drop the [ command