2014-12-19 74 views
1

我希望能夠通過與關鍵字下載http://sites.com/file.exe我能做到這一點發送短信到我的路由器(安裝OpenWrt的)下載文件?我可以使用星號來匹配shell腳本中的任何字符嗎?

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

我也希望能夠通過我的短信下載鏈接到aria2c,我該怎麼做?我在我的路由器上使用這個sms gateway對不起,我不是一個計算機的傢伙,所以我對這樣的東西不太瞭解

回答

0

你可以簡單地用Pattern Matching[[ ]]Conditional Construct「完成它s ==運算符:

當使用'=='和'!='運算符時,運算符右側的字符串被視爲模式並根據規則進行匹配■在模式匹配

代碼如下:(包括空)

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 
1

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

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

由@dgunchev您可以使用此也建議,使「ABCdownload http123」將不匹配

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

我認爲'[ 「$ MESSAGE」=〜^ 「下載HTTP」 *]]'會更正確的... – 2014-12-19 08:21:00

+1

你甚至可以不用最後'*':'[「$ MESSAGE「=〜^」下載http「]]' – whoan 2014-12-19 11:16:44

相關問題