Hi there,

in this little HowTo session I’m gonna show what I’ve experienced with shell scripts (sh) and what needed to be changed, since not everyone runs bash!

Personally I haven’t read any book about it (yet), you might give me a tip which one is good?
Shell programming books on Amazon

If you KNOW you want to use bash, stop here and write perfectly fine bash code! 😉


Don’t use double brackets! [[ ]]

They are not compatible with other shells.
Instead wrap your expression in single brackets and quote the expression

if [ -z "$1" ]

instead of

if [[ -z $1 ]]


The sudo check
if [ $(id -u) != 0 ]
    print "Please run this script as root\n"
    exit 1

Makes a negative root check.


Need newlines when printing something?

Normally I use echo with the -e option, which is not available.
Instead you could try

printf "Your string with\n newline"


Leave the function word out

When declaring a function just use

message() {
  printf "$1\n"


Use #!/bin/sh as your hashbang

Make sure you do not use #!/bin/bash.


Wrap your commands right

A real POSIX shell only supports


Found more stuff? Comment it, and I’ll add it.

HowTo: Make your shell script (more) POSIX compatible
Tagged on:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.