"sh" - URL 验证

"sh" - URL validation

谁能帮我对 SH shell(不是 bash)执行 URL 验证?

尝试了以下一个..但似乎工作不正常。

regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
string=
if echo ""|grep -q '$regex';then
    echo "Link valid"
else
    echo "Link not valid"
fi

我认为您的正则表达式不够复杂,无法处理所有类型的有效 URL 但忽略这一点,您可以通过更改几项内容使其工作:

if echo "" | grep -Eq "$regex"; then
                     ^  ^

我已经使用 -E 开关启用了扩展的正则表达式支持,并在您的变量周围使用了双引号以便扩展它。

将您的 grep 更改为:

grep -qP "$regex"

使用 Perl 正则表达式并启用变量扩展(双引号)。