麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Linux Shell > 正文

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

2020-07-27 19:23:26
字體:
來源:轉載
供稿:網友

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

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

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

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

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

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

復制代碼 代碼如下:

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

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

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

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

試驗過程如下:

復制代碼 代碼如下:

[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()的結果是直接返回給shell顯示了,然后再由awk繼續執行后面的程序,這種情況下,if()里留下的其實是system()的執行狀態【即0或1】”0”~/^[2 3]/,當然就一直執行else了。

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久久网 | 精品人成| 久久久一区二区三区精品 | 美女黄影院 | 欧美另类视频在线 | 久久久在线 | 成人情欲视频在线看免费 | 黄色大片免费网站 | 手机在线看片国产 | 国产视频软件在线 | 黄色一级毛片免费看 | 免费人成在线播放 | 成人午夜精品久久久久久久蜜臀 | 久久精品视频一区 | 欧美一级黄色录相 | 91成人午夜性a一级毛片 | 久久久日韩精品一区二区三区 | 一级黄色在线观看 | 免费国产人成网站 | 色成人在线| 澳门一级淫片免费视频 | 一区二区三区四区高清视频 | 欧美a视频在线观看 | 性爱免费视频 | 羞羞视频| av在线观 | 日韩美香港a一级毛片免费 欧美一级淫片007 | www视频免费在线观看 | 蜜桃视频在线观看视频 | 国产精选91 | 亚洲一区二区三区视频 | 性爱视频在线免费 | 精品国产一区三区| 视频一区二区三区在线播放 | 国产免费一级淫片a级中文 99国产精品自拍 | 毛片成人网 | 欧美成人精品h版在线观看 久久久久久三区 | 久久人体 | 久久伊人国产精品 | 黄色一级片免费观看 | 国产成人自拍视频在线 |