在我的簡易 Linux 程式 WEB UI 框架這篇裡面,是以 switch case 搭配萬字元比對的方式,來辨認 POST Data 中有哪些參數。剛好最近工作中有一個在 VBA 透過 HTTP GET 來執行 Target board 程式的項目,也有類似的需求。於是就想說,是不是可以直接把變數設定成 Shell 變數就好了,這樣操作起來就方便很多了。
很簡單,就是一行而已
一般我們指的 HTTP GET 的資料傳遞方式,就是直接在網址內代入欄位與資料,例如:http://192.168.1.1/cgi-bin/check?cmd=check&target=temperature&interval=5。這樣就會開啟伺服器網頁的 /cgi-bin/check 檔案,並將cmd=check&target=temperature&interval=5 傳給它。
那要怎麼將「cmd=check&target=temperature&interval=5」轉換成3個變數呢?只要透過下面的指令就可以了。
1 |
eval $(echo ${QUERY_STRING//&/;}) |
如此之後,便可以直接使用 cmd, target, 與 interval 三個變數。是不是很方便呢!
完整的程式如下
1 2 3 4 5 6 7 8 9 10 11 |
!/bin/bash header() { echo Content-type: text/plain echo "" } header eval $(echo ${QUERY_STRING//&/;}) echo "cmd=$cmd" echo "target=$target" echo "interval=$interval" |
當瀏覽網頁時,就可以看到印出變數的結果了。