In /usr/bin/startx line 35:
    [ -e "/tmp/.X$d-lock" -o -S "/tmp/.X11-unix/X$d" ] || break
                          ^-- SC2166: Prefer [ p ] || [ q ] as [ p -o q ] is not well defined.


In /usr/bin/startx line 36:
    d=$(($d + 1))
         ^-- SC2004: $/${} is unnecessary on arithmetic variables.


In /usr/bin/startx line 115:
    if [ x"$serverargs" = x -a x"$display" = x ]; then
                            ^-- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.


In /usr/bin/startx line 157:
        if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then
                 ^-- SC2006: Use $(...) notation instead of legacy backticked `...`.

Did you mean: 
        if [ -z "$(hostname --version 2>&1 | grep GNU)" ]; then


In /usr/bin/startx line 158:
            hostname=`hostname -f`
                     ^-----------^ SC2006: Use $(...) notation instead of legacy backticked `...`.

Did you mean: 
            hostname=$(hostname -f)


In /usr/bin/startx line 163:
        hostname=`hostname`
                 ^--------^ SC2006: Use $(...) notation instead of legacy backticked `...`.

Did you mean: 
        hostname=$(hostname)


In /usr/bin/startx line 168:
    mcookie=`/usr/bin/mcookie`
            ^----------------^ SC2006: Use $(...) notation instead of legacy backticked `...`.

Did you mean: 
    mcookie=$(/usr/bin/mcookie)


In /usr/bin/startx line 183:
    xserverauthfile=`mktemp --tmpdir serverauth.XXXXXXXXXX`
                    ^-- SC2006: Use $(...) notation instead of legacy backticked `...`.

Did you mean: 
    xserverauthfile=$(mktemp --tmpdir serverauth.XXXXXXXXXX)


In /usr/bin/startx line 184:
    trap "rm -f '$xserverauthfile'" HUP INT QUIT ILL TRAP KILL BUS TERM
                 ^--------------^ SC2064: Use single quotes, otherwise this expands now rather than when signalled.
                                                          ^--^ SC2173: SIGKILL/SIGSTOP can not be trapped.


In /usr/bin/startx line 199:
        authcookie=`xauth list "$displayname" \
                   ^-- SC2006: Use $(...) notation instead of legacy backticked `...`.
                                                                    ^-- SC1087: Use braces when expanding arrays, e.g. ${array[idx]} (or ${var}[.. to quiet).

Did you mean: 
        authcookie=$(xauth list "$displayname" \
        | sed -n "s/.*$displayname[[:space:]*].*[[:space:]*]//p") 2>/dev/null;


In /usr/bin/startx line 207:
            dummy=$(($dummy+1));
                     ^----^ SC2004: $/${} is unnecessary on arithmetic variables.


In /usr/bin/startx line 218:
xinit "$client" $clientargs -- "$server" $display $serverargs
                ^---------^ SC2086: Double quote to prevent globbing and word splitting.
                                                  ^---------^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean: 
xinit "$client" "$clientargs" -- "$server" $display "$serverargs"


In /usr/bin/startx line 224:
        xauth remove $removelist
                     ^---------^ SC2086: Double quote to prevent globbing and word splitting.

Did you mean: 
        xauth remove "$removelist"

For more information:
  https://www.shellcheck.net/wiki/SC1087 -- Use braces when expanding arrays,...
  https://www.shellcheck.net/wiki/SC2173 -- SIGKILL/SIGSTOP can not be trapped.
  https://www.shellcheck.net/wiki/SC2064 -- Use single quotes, otherwise this...