Если URL содержит ://
, вы знаете, что отбрасывать протокол, а затем отбрасывать все, начиная с первого /
и далее. В противном случае, если он содержит @
, предположим, что это ваш второй случай, и отбросьте все до @
, включая все, начиная с :
и далее. Другие случаи могут быть добавлены по мере необходимости.
url="..."
case $url in
*://*)
domain=${url#*://}
domain=${domain#*@}
domain=${domain%%/*}
;;
*@*:*)
domain=${url#*@}
domain=${domain%%:*}
;;
esac