URLからhttp://またはhttps://を削除するスクリプトを作成しています。これまでhttp://を削除しましたが、その中に入れたすべてを削除するように修正する方法がわからないようです。これまでのコードは次のとおりです。
domain=$1
inp="${domain//http:'//'}"
echo "$inp"
次のコードが必要です。
domain=$1
inp="${domain//http:'//'} OR ${domain//https:'//'}"
echo "$inp"
どうすればいいですか?
答え1
2回実行することを除いて:
拡張グローブを使用してください。
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
2回だけ実行してください。
inp="${domain//http:'//'}"
inp="${inp//https:'//'}"