Linux Shell輸出命令結果到腳本變量中

   這段遇到一個場景就是必須依據某些命令的執行結果,例如,lsmod | grep sctp  | grep -v grep|wc -l來進行某些判斷。我們知道在默認情況下腳本命令的輸出是標準輸出或者管道到別的命令作爲標準輸入,不管上面如何弄,個概念上都是符合文件描的範疇。但如何跨越標準輸出到腳本中的變量呢?跨越了文件系統和腳本領域,我感覺是一個比較大的跨!!查閱了《Linux 命令、編輯器與shell編程》不得不說明此書確實寫的很一般,好多東西說的不夠透徹和明白,在我看來僅是簡單的羅列。

  先是開始研究這本書,後來實在是覺得在這本書上找不到線索,也廢了大半天的時間,就覺得需要採取更高效的方式,問一下別的同事或朋友,這一問還真問出了“突破口”,就是利用反引號將腳本命令括住就可以將腳本命令的執行結果傳遞到變量中,完成一步非常大的跨越!

   既然能夠將腳本執行結果轉化到變量裏面,那麼就可以利用變量參與到後面的邏輯判斷當中,就完成了所需要的功能。後來查閱了網上資料,知道$()機制也可以得到類似的擊結果,而且更符合POSIX。

 而且利用這種方式,將腳本執行結果導向腳本,還可以通過for  in 的腳本語句,實現某些循環操作。'也就是$()可以製造出來一個集合的腳本變量出來。這樣就增強了互操作性。

   這次遇到的問題實際與JDK7和Linux SCTP有關係,雖然通過rpm安裝了lksctp-tools的rpm,但是linux內核卻不能保證SCTP模塊被加載,在啓動SCTP OPEN的時間就遇到系統不支持的協議的提示,但是又在某些環境下是可以正常工作的。所以,簡單規避來做,必須判斷sctp模塊有沒有被加載,然後如果沒有被加載則通過modprobe命令加載SCTP。




發佈了128 篇原創文章 · 獲贊 7 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章