이번에는 말그대로


어떤 파일을 가지고 그 이름의 폴더를 만들고,

거기다가 파일을 복사하고

만든 폴더를 해당 이름으로 압축하는 스크립트입니다.


해괴하지만 어디다가 썼냐고 하면


언리얼엔진 iOS framework 적용 할 때 압축시켜서 넣어둬야되는 정체불명의 구조때문에....


#!/bin/bash
cd "`dirname "$0"`" # Move Directory

for frameworkFiles in *.framework
do
compressname=${frameworkFiles%.framework}
echo $compressname import?
mkdir $compressname                                         # make directory
cp -a -f $frameworkFiles $compressname/$frameworkFiles      # copy framework
zip --symlinks -r $compressname.zip ./$compressname/*       # compress framework all sub directory with symbolic link
rm -r $compressname                                         # delete directory
done
echo end
exit 0


스크립트는 위와 같습니다.


파일/폴더 지울때랑 마찬가지로 


#!/bin/bash 로 시작하고


터미널에서 .sh 로 실행시키는게 아니라  .command 로 바꿔서 하는 경우 경로인식이 제대로 되지 않아서

cd "`dirname "$0"`" # Move Directory 를 추가했습니다

그러면 .command 를 실행하는 폴더를 기준으로 잡습니다.


이번에는 따로 배열 변수를 두지 않고

루프문을 만들었는데


for frameworkFiles in *.framework

.framework 확장자의 파일들을 모두 가져다 쓰겠다는 말입니다.

저한테는 조금 신기하긴 하지만 어쨋든 저렇게 써놓으면 .framework 파일들을 가져다 쓸 수 있게 됩니다.


압축파일 이름을 위한 변수를 하나 두는데 반복문의 변수 framework 를 이용합니다

그런데 framework에 저장된 값을 그냥 쓰게 되면 ~~~~~.framework 라고 되어버리는데 그대로 압축시킬때 써버린다면

~~~~.framework.zip 이라는 파일을 만들게 됩니다. 마음에 들지 않으니 문자열에서 [ .framework ] 를 제외시키기 위해..

compressname=${frameworkFiles%.framework}


${}대괄호로 묶은 변수에 % 다음 빼고 싶은 문자열을 써놓았습니다.


%는 뒷 부분에서부터 가장짧게 일치하는 문자 제거.. 라는 옵션인듯 합니다.


그 외에는 폴더 만들고

그 위치에 파일 복사시키고

그 다음은 압축인데..


zip --symlinks -r $compressname.zip ./$compressname/*


-r 을 이용해서 하위폴더까지 포함시키고

--symlinks 로 symbolic link를 살려서 압축시킨다는 얘기입니다.


--symlinks 빼보니 symbolic link없는 압축은 같겠지만 finder 로 압축할때와 크기도 압축내용물도 다릅니다.