Alteração lógica na semântica shell

**Semântica**
Testando sintaxe e semântica do Shell acabei vendo que não fazia diferença trecho que digitei sem ou com ponto e virgula no final, então pesquisando para ver o por que percebi que o ponto e virgula ` ; `se aplica apenas em código que deve ser executado em partes porem estão na mesma linha como:

    if [[ -z "$@" ]]; then
        echo >&2 "You must supply an argument!"
        exit 1
    elif [[ ! -d "$@" ]]; then
        echo >&2 "$@ is not a valid directory!"
        exit 1
    fi

Já quando a linha está quebrada não se precisa aplicar o ponto e virgula ` ; ` ficando assim:

    if [[ -z "$@" ]]
    then
        echo >&2 "You must supply an argument!"
        exit 1
    elif [[ ! -d "$@" ]]
    then
        echo >&2 "$@ is not a valid directory!"
        exit 1
    fi