我想構建一個shell腳本來自動將目標文件歸檔到靜態庫中,並將所有的頭文件和.a文件複製到所需的目錄。如何在shell腳本中批處理文件?
然而,隨着obj的文件數量的增加,下面的混亂變得更糟:
8 CWD=$(pwd)
9
10 FILE1="SDL_Logger.o"
11 HEADER1="SDL_Logger.h"
12 FILE2="SDL_Initializer.o"
13 HEADER2="SDL_Logger.h"
14 ARC="libsdlhelper.a"
15
16 INCLUDE=~/include
17 LIB=~/lib
18
19 if [ ! -f $FILE1 ];
20 then
21 echo " error: file $FILE1 does not exist. Abort."
22 else
23 if [ ! -f $FILE2 ];
24 then
25 echo " error: file $FILE2 does not exist. Abort."
26 else
27 echo " building archive... "
28 ar rs $ARC $FILE1 $FILE2
29
31 # lib
32 cp $ARC $LIB
34
35 # include
36 cp $HEADER1 $INCLUDE
37 cp $HEADER2 $INCLUDE
39
41 fi
42 fi
所以,如果我把所有文件到一個變量,如:
FILE="obj1.o obj2.o ... "
將如何我檢查每個文件的存在,並複製它們(標題)?我只能一個接一個地做,這很快就不能接受了。
您可能更喜歡使用make,專爲此工作而設計的工具。 – bmargulies
使用'for'循環有問題嗎?你知道他們嗎? – Barmar
是的,Makefiles是要走的路。或者類似的構建系統,比如SCons,CMake,可能還有其他的。 – Carpetsmoker