传递给shell脚本的检查参数是一个URL

传递给shell脚本的检查参数是一个URL

问题描述:

如何检查传递给shell脚本的参数是一个以http或https开头并以.jpg结尾的url?传递给shell脚本的检查参数是一个URL

我有以下代码来检查,但这只能检查参数是否已经通过。

#!/bin/bash 
if [ -z "$S1" ] 
then 
    echo "Missing JPG URL" 
fi 
+0

真正的答案是,bash不能这样做。被接受的答案已经足够接近内部使用的脚本或其他东西,但不会在公开分发的实用程序中飞行。 – miken32

使用模式匹配运算符:(您可能需要启用扩展模式与shopt -s extglob先在旧版本的bash

if [[ $1 != http?(s)://*.jpg ]]; then 
    echo "Invalid URL" 
fi 

另外,使用正则表达式:

if [[ $1 =~ https?://.*\.jpg ]]; then 
+0

我使用./shelscriptjpg http://www.example.com/test.jpg运行脚本,但仍然给我回显无效的URL。 – Alex

+0

如果你想检查第一个参数,使用'$ 1',而不是'$ S1'。 – chepner

+0

谢谢,工作:) – Alex