1.編寫一個腳步,讀取src目錄的文件,然后編譯它們,轉移到OUTPUT目錄,然后把OUTPU下的文件打包
編寫一個文件寫linux線程與線程間通信(消息隊列)

if [ ... ]; then ... fi
if [ ! -d "$SRC_-DIR" ]; then 的意思是:“如果名為 $SRC_DIR 的目錄不存在,那么就執行 then 后面的命令。
2>&1
將標準錯誤輸出,也重定向到標準輸出當前所指向的地方
將標準錯誤輸出,也重定向到標準輸出當前所指向的地
read: Shell 內建命令,用于讀取輸入。
IFS=: 臨時清空內部字段分隔符,防止分詞。
basename:提取文件名部分
用法: basename -- "$c_file"
tar -cvf
-
參數:
-
-c: Create,創建一個新的歸檔。
-
-z: 通過 gzip 進行壓縮。
-
-v: Verbose,顯示詳細的處理過程。
-
-f: File,指定歸檔文件的名字。后面必須緊跟文件名。
-
-C <dir>: 在執行操作前,先切換到 。
-
$(filter <pattern>,<text>)
它會檢查 <text> 中的每一個單詞,如果某個單詞匹配 <pattern>,就把它保留下來。最后返回所有被保留下來的、用空格隔開的單詞列表。

首先判斷 SRC_IDR是不是一個目錄
!-d "SRC_DIR" 不是一個目錄
for file in "SRC_DIR"/*; 通配符,找所有的文件
創建一個目錄
一個shell指令 找所有的源文件 清空輸入空字字符號
basename -- "$c_file" 提取文件
模板:
#PROJECT_DIR "."
1.檢查環境參數
check_environment(){
echo "check environment"
if(! -f "Makefile")
echo "Makefile didnot exist"
exit 1
fi
echo "check Command make and gcc"
local commands = {"make","gcc"}
for cmd in "${commands[@]}"; do
if ! command -v $cmd &> /dev/null; then
echo "$cmd didnot exist"
exit 1
fi
mkdir -p $BUILD_DIR
}
2.
編譯函數
build()
{
echo "begin to build project"
make -j(proc) 2>&1 | tee -a $LOG_FILE
echo "build success"
}
構建
函數: