我可以使用星号来匹配shell脚本中的任何字符吗?

时间:2014-12-19 07:44:48

标签: bash shell

我希望能够通过向我的路由器(已安装openwrt)发送短信来下载文件,并使用关键字下载http://sites.com/file.exe 我可以这样做吗?

if [ "$MESSAGE" = "download http*" ]; then
    aria2c httpxxxx 
fi

我也希望能够将我的短信上的下载链接传递给aria2c,我该怎么做?我在我的路由器上使用此sms gateway我很抱歉我不是电脑用户,所以我对此类内容不太了解

2 个答案:

答案 0 :(得分:1)

您可能想要使用regex。例如:

if [[ "$MESSAGE" =~ "download http" ]]
then
    aria2c httpxxxx 
fi

根据@dgunchev的建议你也可以使用它,以便" ABCdownload http123"赢了

[[ "$MESSAGE" =~ ^"download http" ]]

答案 1 :(得分:0)

您只需使用Pattern Matching ==运算符[[ ]]Conditional Construct即可完成此操作:

  

当使用'=='和'!='运算符时,运算符右侧的字符串被视为模式,并根据模式匹配中描述的规则进行匹配

代码:

if [[ "$MESSAGE" == "download http"* ]]; then
    aria2c ${MESSAGE/*http/http}
fi

通过这种方式,您可以匹配以download http开头并后跟任意字符串的消息(包含空值)


如果您需要不区分大小写的解决方案(由您的评论采纳),您可以先将$MESSAGE转换为小写:

MESSAGE=${MESSAGE,,} #If you need $MESSAGE untouched, just use a new var name