1.編寫一個腳步,讀取src目錄的文件,然后編譯它們,轉移到OUTPUT目錄,然后把OUTPU下的文件打包

編寫一個文件寫linux線程與線程間通信(消息隊列)

image

 

if [ ... ]; then ... fi

if [ ! -d "$SRC_-DIR" ]; then 的意思是:“如果名為 $SRC_DIR 的目錄不存在,那么就執行 then 后面的命令。

2>&1

將標準錯誤輸出,也重定向到標準輸出當前所指向的地方

 

將標準錯誤輸出,也重定向到標準輸出當前所指向的地

read: Shell 內建命令,用于讀取輸入。

IFS=: 臨時清空內部字段分隔符,防止分詞。

basename:提取文件名部分

用法basename -- "$c_file" 

tar -cvf 

  • 參數:

    • -cCreate,創建一個新的歸檔。

    • -z: 通過 gzip 進行壓縮。

    • -vVerbose,顯示詳細的處理過程。

    • -fFile,指定歸檔文件的名字。后面必須緊跟文件名

    • -C <dir>: 在執行操作前,先切換到 

$(filter <pattern>,<text>) 

  它會檢查 <text> 中的每一個單詞,如果某個單詞匹配 <pattern>,就把它保留下來。最后返回所有被保留下來的、用空格隔開的單詞列表。

 

image

 首先判斷 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"

}

構建

 

函數: