Sorry, I forgot about this thread.
"$LOG" is out of habit; it's good practice to, where valid, surround variable calls in quotation marks, to protect what's assigned from being interpreted by the shell.
Fair enough on the simplicity aspect. I didn't realise you were intentionally shooting for that. I'm stuck in my ways; I write the code for the result which is for the user, rather than the code for the user. I've also been doing this for a little while and gotten so stuck into it that I forget how dizzying it used to look. I can definitely appreciate the mistrust thing as well. Maybe I should consider simplifying my code, but then why hamper my code because of some rotten eggs spoiling it for the rest of us? Aaaah, ... xD To be fair, if you don't understand the code and/or don't trust it, then it's not for you, generally speaking; I don't mean you, personally. I bet C++ programmers aren't trying to make sure their programs are simple enough for everybody to understand.
More lines don't necessarily mean it's worse off. A short version can be just as bad as a long version. Depends on what's used, how, and why. Too many approaches to things to be concrete about any of it, but my approach, personally, tends to be to use as few a number of processes as possible, to concerve resources and boost portability; it's a habit. Why bring in all these other programs if the shell itself can do it? More often than not, it can. Unless speed is required, of course.
There's a debate that seems everlasting about whether you should or shouldn't have sudo in a script. I avoid it, unless needed. I prefer, and feel it's better presented, to use sudo on the command line, like all the other programs. As long as you write the code carefully (or use sudo -u user to reduce privileges with sensitive commands) you can limit the risks. Using sudo $0 would need to be done with care, lest you wind up with two separate instances of the script, which could clash.