Script de shell POSIX:
inp="${domain#http*://}"
Teste:
for domain in 'https://foo.bar/baz' 'http://foo.bar/baz' ; do \
inp="${domain#http*://}" ; \
echo "$inp" ; \
done
Saída:
foo.bar/baz
foo.bar/baz
Estou fazendo um script que removerá o http: // ou https: // de um URL. Até agora eu tenho que remover o http: //, mas não consigo descobrir como modificá-lo para que ele possa remover ou que eles entraram. Aqui está o código até agora:
domain=$1
inp="${domain//http:'//'}"
echo "$inp"
Estou precisando de código semelhante a este:
domain=$1
inp="${domain//http:'//'} OR ${domain//https:'//'}"
echo "$inp"
Como eu faria isso?
Além de correr duas vezes:
shopt -s extglob
v=${domain#http?(s)://}
printf "%s\n" "$v"
BASH_REMATCH
: Exigindo o protocolo:
if [[ "$domain" =~ https?://(.*) ]]
then
printf "%s\n" "${BASH_REMATCH[1]}"
else
printf "Not valid input: '%s'\n" "$domain"
fi
Não requerendo protocolo:
[[ "$domain" =~ (https?://)?(.*) ]] && v="${BASH_REMATCH[2]}"
printf "%s\n" "$v"
Basta fazer isso duas vezes:
inp="${domain//http:'//'}"
inp="${inp//https:'//'}"
Tags bash text-processing string