Оболочка возможно, чтобы объединить поиск переменной и замены подстроения
underline() { printf '%s\n%.*s\n' "$1" ${#1} "${1//?/${2:--}}"; }
SAMER SAEID
underline() { printf '%s\n%.*s\n' "$1" ${#1} "${1//?/${2:--}}"; }