在
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...