主管還很貼心的提供了一個小測驗,由於我對 Tcl 或是 Makefile 都只是略懂,一開始先花點時間整理脈絡,直到看到主管說的關鍵字後,便開始主攻這個測驗。
雖然這個測驗有點像腦筋急轉彎?但在一步一步分解問題後,最後還是能找到解法,但我也花了一個小時多有,還好在吃飯前順利搞定。
簡單快速紀錄一下,今天學到的東西XD
01. Makefile 變數賦值
= 在使用到變數時展開。
:= 宣告變數時就展開。
?= 變數為空時才給值。
+= 將值附加到原本變數。
02. .DEFAULT_GOAL
如題,此變數為 GNU make 的一個特殊變數,有設定這個,假設 make 後面沒帶 target 就會以這個變數為主,而不是檔案中找到的第一個 target。
03. $$0 in awk command of Makefile
原本 awk 取原始字串是 $0,但在 Makefile 中 $ 有特殊用途,故在 awk 指令中,需要多加一個 $。
另外,如果想印出 $@,則應該要這樣寫 @echo \$$@。
04. env variable in Tcl
puts $::env(OS),此指令的意思是印出 OS 這個環境變數,env 本身是 array,array in Tcl 是關聯陣列。
05. call proc in some Tcl files.
source $::env(SCRIPTS_DIR)/report_metrics.tcl
report_metrics 6 "finish"
report_metrics.tcl 檔案中都是函數,這樣就可以呼叫該檔案裡面的 report_metrics 函數。
06. /usr/bin/time -f '%E %MKb' sleep 5
time 是用來記錄執行指令的時間,不同的 format 可以顯示不同的資訊,上面表示記錄 sleep 5 執行的時間及最大記憶體使用。
07. export QT_QPA_PLATFORM = offscreen,console 執行時就不會報錯。
08. $(shell command -v ls)
執行 command 查詢 ls 指令。
09. awk, mawk, gawk 三個是不同的程式
awk 'match($$0, pattern, array) 是錯的,因為這是 gawk 才有的語法,awk 有 match 但不能將 pattern 裡面抓到的 group 資訊存到 array。
沒有留言:
張貼留言