
Estoy creando un script que eliminará http:// o https:// de una URL. Hasta ahora lo tengo para eliminar http://, pero parece que no puedo entender cómo modificarlo para que elimine lo que ingresaron. Aquí está el código hasta el momento:
domain=$1
inp="${domain//http:'//'}"
echo "$inp"
Necesito un código que se vea así:
domain=$1
inp="${domain//http:'//'} OR ${domain//https:'//'}"
echo "$inp"
¿Cómo haría para hacer esto?
Respuesta1
Además de correr dos veces:
Usando globo extendido:
shopt -s extglob
v=${domain#http?(s)://}
printf "%s\n" "$v"
Usando la variable interna de bash BASH_REMATCH
:
Protocolo requerido:
if [[ "$domain" =~ https?://(.*) ]]
then
printf "%s\n" "${BASH_REMATCH[1]}"
else
printf "Not valid input: '%s'\n" "$domain"
fi
No requiere protocolo:
[[ "$domain" =~ (https?://)?(.*) ]] && v="${BASH_REMATCH[2]}"
printf "%s\n" "$v"
Respuesta2
Script de shell POSIX:
inp="${domain#http*://}"
Prueba:
for domain in 'https://foo.bar/baz' 'http://foo.bar/baz' ; do \
inp="${domain#http*://}" ; \
echo "$inp" ; \
done
Producción:
foo.bar/baz
foo.bar/baz
Respuesta3
Solo hazlo dos veces:
inp="${domain//http:'//'}"
inp="${inp//https:'//'}"