
Ich erstelle ein Skript, das http:// oder https:// aus einer URL entfernt. Bisher habe ich es geschafft, http:// zu entfernen, aber ich weiß nicht, wie ich es ändern kann, damit es die eingegebenen Zeichen entfernt. Hier ist der bisherige Code:
domain=$1
inp="${domain//http:'//'}"
echo "$inp"
Ich brauche Code, der ungefähr so aussieht:
domain=$1
inp="${domain//http:'//'} OR ${domain//https:'//'}"
echo "$inp"
Wie würde ich dabei vorgehen?
Antwort1
Außer zweimaligem Ausführen:
Erweiterten Glob verwenden:
shopt -s extglob
v=${domain#http?(s)://}
printf "%s\n" "$v"
Verwenden der internen Bash-Variable BASH_REMATCH
:
Erforderliches Protokoll:
if [[ "$domain" =~ https?://(.*) ]]
then
printf "%s\n" "${BASH_REMATCH[1]}"
else
printf "Not valid input: '%s'\n" "$domain"
fi
Kein Protokoll erforderlich:
[[ "$domain" =~ (https?://)?(.*) ]] && v="${BASH_REMATCH[2]}"
printf "%s\n" "$v"
Antwort2
POSIX-Shell-Skript:
inp="${domain#http*://}"
Prüfen:
for domain in 'https://foo.bar/baz' 'http://foo.bar/baz' ; do \
inp="${domain#http*://}" ; \
echo "$inp" ; \
done
Ausgabe:
foo.bar/baz
foo.bar/baz
Antwort3
Mach es einfach zweimal:
inp="${domain//http:'//'}"
inp="${inp//https:'//'}"