awk中讓人鬱悶的system 函式

2022-09-26 17:24:11 字數 1288 閱讀 2524

發現乙個特尷尬的事實。我辛辛苦苦去百度資料,想用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

" $1)~/^[2|3]/) else

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

第一,不管我在{}中進程式設計客棧行什麼操作,程式都把system()的結果print出來了;

第二,即使system()的結果是200,print出來的也是else{}的」而如果我直接試驗if(200~程式設計客棧/^[2 3]/){}els結果就很正常!

試驗過程如下:

複製** **如下:

[rao@localhost ~]$ echo ""|awk ' else}'

:[rao@localhost ~]$ echo ""|awk ' "$1)~/^[2|3]/) else}'

200程式設計客棧:

思前想後,在百度大嬸的幫助下,終於搞明白乙個問題:system()的結果是直接返回給shell顯示了,然後再由awk繼續執行後面的程式,這種情況下,if()裡留下的其實是system()的執行狀態【即0或1】」0」~/^[2 3]/,當然就一直執行else了。

糟糕的問題是awk的getline,無法直接把system()的執行結果匯入awk的變數…除非我先system乙個檔案,然後getline這個檔案。mygod!

而如果採用while(「curl」 getline var)的執行方式,如何傳遞shell變數進去又成了問題……唉

本文標題: awk中讓人鬱悶的system()函式

本文位址:

遊戲設計中讓人鬱悶的事(一)

一.任務勝利條件,保護某某npc不陣亡,ai問題 一開始你離npc距離有點遠,npc的仇恨機制和敵人的仇恨機制玩命的往敵人那邊衝。二.日式rpg周目制 一些重要的資訊在某個周目觸發的,玩家還要記錄在什麼周目,去什麼地方才能達成這些資訊。乙個不留神就錯過了。三.無盡的殺怪 乙個收集的任務或者系列的任務...

Xml讓人鬱悶的SelectNodes方法

selectnodes xpath,namespace 方法中 無論是xmldoc.selectnodes xpath,namespace 假設xmldoc為根節點,整個文件下的查詢 還是xmldoc.childnodes i selectnodes xpath,namespace 節點下的查詢 兩...

一次讓人鬱悶的遭遇

今天是周五,2011年11月2日。剛來到公司就遭遇很鬱悶的事,我那讓人鬱悶的同事指責我寫的乙個匯出excel的程式有問題,開始我以為是程式報錯什麼的,一問才知道,程式寫的沒問題,是顯示的內容讓他看起來不爽,而我寫的方式是問過專案經理和另外乙個同事的。問他有什麼問題,他只說顯示的比較亂,必須按照什麼樣...