2016-11-02 5 views
2

Ich versuche zu überprüfen, ob eine URL mit http | https beginnt und mit jpg | png endet. Ich habe gesucht, aber die Antworten funktionieren nicht für mich.Bash-Check für HTTP oder HTTPS Regex

Ich habe dies zur Zeit:

if [[ $url = ^https?://.*jpg ]] 
then 
wget -O webcam.jpg $url 
fi 

Aber seine nicht wget zu. Was mache ich falsch?

Antwort

1

Sie müssen den Operator =~ für den regulären Ausdruck verwenden. = funktioniert nur Muster passend. Das äquivalente Muster wäre http?(s)://*jpg*. (Neuere Versionen von bash verwenden immer längere Muster innerhalb [[ ... ]], ältere Versionen benötigen können sie mit shopt -s extglob explizit eingeschaltet werden.)

(I die Hinter * das Muster hinzugefügt, da Muster verankert sind an beiden Enden der Schnur durch Standard , während reguläre Ausdrücke ^ und $ ausdrücklich verlangen. da Sie nicht $ am Ende des regulären Ausdrucks haben, machte ich das Muster am Ende offen als auch.)

+0

Wurde nicht das Hinzufügen eines eine Hinter '*' übereinstimmen URL wie 'http: // jpg.com/not_an_image.html'? Ich denke, dass OP genaues Matching und nicht Substring-Matching wünscht. – dimo414