Estaba leyendo other question que tiene algunas expresiones regulares muy buenas para el trabajo, pero hasta donde puedo ver, ninguna de ellas funciona con comandos BASH ya que los comandos BASH no son compatibles con tales complejos rexeg.Verifique si hay un enlace válido (URL)
if echo "http://www.google.com/test/link.php" | grep -q '(https?|ftp|file)://[-A-Z0-9\+&@#/%?=~_|!:,.;]*[-A-Z0-9\+&@#/%=~_|]'; then
echo "Link valid"
else
echo "Link not valid"
fi
Pero esto no funciona como -q grep no funciona ...
Editar, bien me di cuenta de que tenía un grep "en expresiones regulares extendida" opción (-E) que parece hacer que funcione. Pero si alguien tiene una manera mejor/más rápida, todavía me encantaría hablar al respecto.
Es posible que desee examinar su motivación para hacer esta pregunta. Los programadores intentan hacer una evaluación estática de URL/URI y direcciones de correo electrónico que puede mostrar para que sean sintácticamente válidas, pero no le dicen nada sobre su accesibilidad. Por ejemplo, 'http: // www.example.com/bogus # fragment' siempre será sintácticamente válido y (presumiblemente) siempre devolverá un error 404. – msw
Esta función no necesita saber si los enlaces funcionan o no, solo que es un enlace. – Mint
¿De qué sirve una URL que nunca localiza un recurso? ¿Por qué molestarse en chequear? – msw