
我正在製作一個腳本,該腳本將從 URL 中刪除 http:// 或 https:// 。到目前為止,我已經刪除了 http://,但我似乎不知道如何修改它,以便刪除它們輸入的任何內容。這是到目前為止的程式碼:
domain=$1
inp="${domain//http:'//'}"
echo "$inp"
我需要如下所示的程式碼:
domain=$1
inp="${domain//http:'//'} OR ${domain//https:'//'}"
echo "$inp"
我該怎麼做呢?
答案1
除了運行兩次之外:
使用擴充的 glob:
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 shell 腳本:
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:'//'}"