我在/ www/cgi-bin/test上有一個shell腳本,我可以在我的網絡上訪問http://192.168.1.1/cgi-bin/test
。域名正則表達式不匹配
我試圖解析查詢字符串,它應該像d=domain.com
,並驗證對正則表達式:
#!/bin/sh
echo "Content-type: text/html"
echo ""
domain=${QUERY_STRING#d=}
if [[ ! $domain =~ [A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,}) ]]; then
exit
fi
echo "Validation success!"
當這個沒有工作,我嘗試使用另一個正則表達式這是我從偷here:
if [[ ! $domain =~ \
^(([a-zA-Z](-?[a-zA-Z0-9])*)\.)*[a-zA-Z](-?[a-zA-Z0-9])+\.[a-zA-Z]{2,}$ \
]]; then
exit
fi
我不能得到這個正則表達式匹配。在這兩種情況下,我都試圖根據Advanced Bash-Scripting Guide轉義大括號(\{2,\}
),但這沒有什麼區別。
如果相關,我所在的平臺是OpenWrt 12.09。
編輯:我剛剛意識到我的shell腳本可能不支持bash的[[ ... =~ ... ]]
語法。不幸的是,OpenWrt沒有包含bash。
如果您使用case語句和glob匹配而不是那些皮塔來讀bashisms,它會更簡單和更便攜。 – technosaurus
請發佈一個代碼示例。 –