[ "$NAME" = "John" ] は何をテストしますか?
[ "$NAME" = "John" ]
NAME に John を代入する。
John という名前のファイルが存在するかどうか。
NAME の文字列値が、空文字列や空白を含む値をクォートで保護したうえで、John と完全に等しいかどうか。
NAME が数値として John と等しいかどうか。