我有一個正在CGI中使用的bash腳本。 CGI通過讀取URL中的?
之後的所有內容來設置$ QUERY_STRING環境變量。例如,http://example.com?a=123&b=456&c=ok集合QUERY_STRING=a=123&b=456&c=ok
。
某處我發現下面的醜陋:
b=$(echo "$QUERY_STRING" | sed -n 's/^.*b=\([^&]*\).*$/\1/p' | sed "s/%20/ /g")
將設置$ B到任何在$ QUERY_STRING發現b
。但是,我的腳本已經增長到超過十個輸入參數。有沒有更簡單的方法來自動將$ QUERY_STRING中的參數轉換爲bash可用的環境變量?
也許我會只使用一個某種類型的循環,但它會是更好的,如果劇本足夠聰明,能夠自動檢測各項參數,也許建立一個數組,看起來是這樣的:
${parm[a]}=123 ${parm[b]}=456 ${parm[c]}=ok
我怎麼能寫代碼來做到這一點?
我只注意到我確實停留在猛砸3.有沒有人有這將不涉及關聯數組簡單,安全的解決方案? – User1 2010-10-13 16:30:56
請參閱我編輯的關於關聯數組的替代答案(也請務必閱讀我鏈接到的頁面([BashFAQ/006](http://mywiki.wooledge.org/BashFAQ/006))。 – 2010-10-19 01:32:26
此鏈接將有助於你很容易解決你的問題 http://stackoverflow.com/questions/17021640/how-to-extract-the-data-using-sed-command – amar 2013-06-11 05:23:34