濮阳杆衣贸易有限公司

主頁 > 知識庫 > awk中讓人郁悶的system()函數(shù)

awk中讓人郁悶的system()函數(shù)

熱門標(biāo)簽:如果做線上地圖標(biāo)注 揭陽智能電話機器人推薦 打電話機器人接我是他的秘書 地圖標(biāo)注員都是年輕人 河南信譽好的不封卡電話外呼系統(tǒng) 江蘇云電銷機器人公司 客服外呼系統(tǒng)怎么樣 百度地圖標(biāo)注錯了有責(zé)任嗎 華鋒e路航港口地圖標(biāo)注

發(fā)現(xiàn)一個特尷尬的事實。我辛辛苦苦去百度資料,想用rewrite實現(xiàn)針對不同域名源站故障后的自動跳轉(zhuǎn)功能,但整個思路里遺漏了一個嚴(yán)重的問題。

按我的思路,針對請求的url進(jìn)行一次curl,然后根據(jù)http_code去改寫url或者原樣輸出——這也就意味著,每一個請求,squid都回源去取一次header。那么對于源站來說,前面squid的緩存率,就是0%!完全沒有效果。

得重新想過辦法……難道去看squid源代碼?汗

本著有頭有尾善始善終的原則,決定還是把原先那個雞肋想法寫完。根據(jù)squid權(quán)威指南11章的說法,傳遞給重定向器的流格式為:URL IP/FQDN IDENT METHOD,其中FQDN和ident經(jīng)常是空。METHOD,一般是GET和POST,squid只能緩存GET的數(shù)據(jù),但不能無視POST方式,因為有時候POST數(shù)據(jù)header太大的話,squid可能拒絕轉(zhuǎn)發(fā)這些內(nèi)容,這就不好玩了。

在明確這個格式以后(主要是草草收尾的想法影響下),我便覺得其實完全不用perl或者php來搞,簡單的awk就足夠了——當(dāng)然,shell不行,因為shell不能從事這種流狀的行處理。

以下是本著我想法寫的awk腳本:

復(fù)制代碼 代碼如下:

#!/bin/awk -f
{
  if(system("curl -o /dev/null -s -w %{http_code}" $1)~/^[2|3]/){
    print ":$1"
  } else {
    print ":http://www.baidu.com/"
  }
}

但是再度讓我郁悶的事情接連發(fā)生。

第一,不管我在{}中進(jìn)行什么操作,程序都把system()的結(jié)果print出來了;

第二,即使system()的結(jié)果是200,print出來的也是else{}的”http://www.baidu.com”;而如果我直接試驗if(200~/^[2 3]/){}else{},結(jié)果就很正常!

試驗過程如下:

復(fù)制代碼 代碼如下:

[rao@localhost ~]$ echo "http://www.google.com"|awk '{if(200~/^[2|3]/){ print ":"$1 } else{ print ":http://www.baidu.com/"}}'
:http://www.google.com
[rao@localhost ~]$ echo "http://www.google.com"|awk '{if(system("curl -o /dev/null -s -w %{http_code} "$1)~/^[2|3]/){print ":"$1 } else{ print ":http://www.baidu.com/"}}'
200:http://www.baidu.com/

思前想后,在百度大嬸的幫助下,終于搞明白一個問題:system()的結(jié)果是直接返回給shell顯示了,然后再由awk繼續(xù)執(zhí)行后面的程序,這種情況下,if()里留下的其實是system()的執(zhí)行狀態(tài)【即0或1】”0”~/^[2 3]/,當(dāng)然就一直執(zhí)行else了。

糟糕的問題是awk的getline,無法直接把system()的執(zhí)行結(jié)果導(dǎo)入awk的變量…除非我先system里>一個文件,然后getline這個文件。MyGod!

而如果采用while(“curl” getline var)的執(zhí)行方式,如何傳遞shell變量進(jìn)去又成了問題……唉

標(biāo)簽:馬鞍山 淘寶邀評 巴彥淖爾 許昌 婁底 赤峰 金昌 邵陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《awk中讓人郁悶的system()函數(shù)》,本文關(guān)鍵詞  awk,中,讓人,郁悶,的,system,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《awk中讓人郁悶的system()函數(shù)》相關(guān)的同類信息!
  • 本頁收集關(guān)于awk中讓人郁悶的system()函數(shù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    辽源市| 沙河市| 仁布县| 金华市| 松原市| 平谷区| 图片| 汉中市| 达孜县| 屏山县| 佳木斯市| 延吉市| 肃宁县| 尼木县| 旅游| 鄂州市| 霸州市| 玉环县| 江口县| 公主岭市| 澄迈县| 连平县| 巴马| 临猗县| 临江市| 彭州市| 商河县| 玛沁县| 周至县| 隆昌县| 亳州市| 家居| 绵阳市| 永安市| 策勒县| 钟山县| 徐汇区| 兴山县| 萨迦县| 昔阳县| 万宁市|