Sorry juicebot , it ' s my spelling . I did a little bit of Latin at school but that was a loooooonnnnnngggg time ago . <| sep |> I mean we saw that with atheists arguing against creationalists or religious people in general . It just doesn ' t work and all it ends up doing is giving them a podium for them to say their shit <| sep |> There ' s a lot that ' s been said so far , but there ' s a few things I can add andor reinforce from the experience of fixing up badly written scripts over the last decade or so . Unless you know what uppercase variables are for , don ' t use them . What method you use instead is your choice , be it TitleCase , pascalCase or snakecase . At the moment I favour pascalCase . If you absolutely must be ignorant on this point andor just have a raging codeboner for uppercase vars , the least you can do is prepend them e . g . VARVARIABLE . If you ' re going to do that , you may as well use a consistent style across other elements e . g . arrsomearray , funcsomefunction . Backticks were superseded back in ' 83 . There are sysadmins and devs who are younger than $. So stop using them . Pretty much every UNIX and unixlike OS since the early 90 ' s has shipped with a POSIX friendly shell , usually some variant of ksh , and so $ can be used on almost everything that walks like a nix and quacks like a nix . Stop it with the gorram backticks . For a functional reason to avoid them $ nests neatly , backticks don ' t Avoid UUOC and UUOE . Favour builtins over externals , if you ' re writing portably , test and failover . Stylistically I prefer 2 space indenting and ascloseto 80 column width as possible . I used to not care so much until the day I had to hook up a VT 240 to a rather upset HP NClass and debug a script that was imploding HPUX ' s boot process . That straightened me right out . The more portably you want to write your scripts , the more that historical context like that should rightly guide your style shellcheck , shellcheck , shellcheck . Pass shellcheck linting or get good enough to the point where you can understand why shellcheck might be wrong Comment liberally Be consistent