Existem várias soluções para isso. Primeiro, vamos criar uma variável que contenha uma nova linha para ser usada mais tarde (no bash):
nl=$'\n'
então ele pode ser usado para construir a variável a ser impressa:
#!/bin/bash
nl=$'\n'
if [ "$1" ]; then
addvline="$1$nl"
else
addvline=""
fi
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Ou você pode evitar o if
inteiramente se usar a expansão de parâmetro correta:
#!/bin/bash
nl=$'\n'
addvline="${1:+$1$nl}"
cat << EOF
this is the first line
$addvline
this is the last line
EOF
Ou, em um código mais simples:
#!/bin/bash
nl=$'\n'
cat << EOF
this is the first line
${1:+$1$nl}
this is the last line
EOF