LDD3 中 awk 語句的解釋

2021-06-27 08:28:17 字數 1001 閱讀 2546

 在

ldd3

的乙個建立節點的

shell

指令碼中,用到了

awk文字處理工具,在這裡做一下解釋。

原句:major=$(awk "\\$2==\"$module\" "/proc/devices)

module

變數在指令碼中定義為

scull.

/proc/devices

是awk

要處理的輸入檔案。

$2,$1,

分別代表輸入檔案中的每條記錄的第二個域和第乙個域,域之間的分隔符預設是空格。

式中的那幾個斜槓是什麼意思? 在

awk中,

\是轉義字元,就是讓其後面的元字元顯示本意(而不是

shell

賦予它們的意義)。這樣,

\\$2

就變成了

\$2,

\",就是"。

為什麼是

\$2?

在shell中,$

後面跟變數,如果直接是

$2,就代表呼叫

shell

指令碼時傳入的第二個引數,而不是上面我們談到的含義,這就是要加

\ 的原因,它要求

$2原封不動傳給

awk,

不然就被

shell

替換為輸入引數了。

這句話的意思是從輸入檔案

/proc/devices

檢查記錄

,若第二個域是

scull,

則列印記錄的第乙個域,也就是裝置的主裝置號,並將這個值賦給了

major

。awk

的執行動作的部分是放在單引號內的,但是上面的語句是將動作放在雙引號內

,什麼原因?

這是因為命令已經傳給

awk了,引號已經沒了。

shell

裡面這個引號是為了阻止

print{}

裡的內容

作為shell

的命令塊處理

LDD3 帶有引數的模組

include include include static char who who static int time 1 module param time,int,s irugo module param who,charp,s irugo static int hello init void ...

LDD3學習筆記 模組的編譯

新手上路,ldd3學習之旅開始,以下內容純屬筆記,若有錯誤,望見諒!1.什麼是 模組 可以在系統執行時加入到核心中的 故 模組包括但不限於裝置驅動程式。2.如何寫乙個模組?1 c檔案 2 實現module init,module exit3.ldd3中makefile編寫規則 照搬 ifneq ke...

LDD3 硬體通訊 章節出現的問題總結

1 編譯的時候,出現 iso c90 forbids mixed declarations and code 我一直搞不清出怎麼 回事,後來上網google一下,發現原來是變數定義之前,如果有非變數語句出現,那麼就有這個警告,把非變數移到變數之後,就沒有警告了。不用擔心,不是程式問題。2 我用的s3...