URL에서 http:// 또는 https://를 제거하는 스크립트를 만들고 있습니다. 지금까지 http://를 제거했지만 그 안에 넣은 모든 것을 제거하도록 수정하는 방법을 알 수 없는 것 같습니다. 지금까지의 코드는 다음과 같습니다.
domain=$1
inp="${domain//http:'//'}"
echo "$inp"
다음과 같은 코드가 필요합니다.
domain=$1
inp="${domain//http:'//'} OR ${domain//https:'//'}"
echo "$inp"
어떻게 해야 하나요?
답변1
두 번 실행하는 것을 제외하고:
확장된 글로브를 사용하십시오:
shopt -s extglob
v=${domain#http?(s)://}
printf "%s\n" "$v"
Bash 내부 변수를 사용하십시오 BASH_REMATCH
.
요구 사항 계약:
if [[ "$domain" =~ https?://(.*) ]]
then
printf "%s\n" "${BASH_REMATCH[1]}"
else
printf "Not valid input: '%s'\n" "$domain"
fi
동의가 필요하지 않습니다.
[[ "$domain" =~ (https?://)?(.*) ]] && v="${BASH_REMATCH[2]}"
printf "%s\n" "$v"
답변2
POSIX 쉘 스크립트:
inp="${domain#http*://}"
시험:
for domain in 'https://foo.bar/baz' 'http://foo.bar/baz' ; do \
inp="${domain#http*://}" ; \
echo "$inp" ; \
done
산출:
foo.bar/baz
foo.bar/baz
답변3
두 번만 수행하십시오.
inp="${domain//http:'//'}"
inp="${inp//https:'//'}"