- 현재날짜/시간 format대로 출력
- 현재 dir가 그 dir가 맞는지
- file/folder 있는지 확인후 만들기, 없으면 에러나 만들기
- if else
- for loop, while
외부 프로그램 실행하기- Input parameter받아 command에 넣기
- parameter validate하기
- website에서 label읽어오기
- sleep, timeout = sleep
- 외부파일을 읽어서 parameter 순차적으로 읽기
http://en.wikibooks.org/wiki/Bash_Shell_Scripting
http://wiki.bash-hackers.org/syntax/pattern
http://linuxcommand.org/wss0130.php
http://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash
Bash header, 날짜구하기, 시간
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash #------------------------------- # Fred Oh (email) # 2015/01/01 starting new life #------------------------------- ulimit today=` date +%m%d` source ~/.bashrc today=` date +%m%d_%H%M%S` $ NOW=$( date + "%m-%d-%Y" ) |
Pattern Matching
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/bin/bash #------------------------------- # Fred Oh (email) # 2015/01/01 starting new life #------------------------------- au_archive_dir= "....../LA.BF64.1.2.1" branch_name= 'LA.BF64.1.2.1' au_prefix= 'AU_LINUX_ANDROID' cd $au_archive_dir post_fix_temp=` ls -t 05.01.00.0[0-9][0-9].[0-9][0-9][0-9] | head -1` echo $post_fix_temp #Removing last :, first of all why it ends with : post_fix= "${post_fix_temp//:}" echo POST_FIX is $post_fix #Extract only last 3 digit number #au_number="${post_fix:-3:3}" doesn't work T.T au_number= "${post_fix:13:3}" echo TODAY_AU ${today}_au${su_number} /^([[:Digit:]]{2}\.){3}([[:Digit:]]{3}\.){2}.*$/{ printf ( "matches\n" ); } |
IF/Loop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #!/bin/bash #------------------------------- # Fred Oh (email) # 2015/01/01 starting new life #------------------------------- if [ -d "$buildpath" ]; then buildpath= "${buildpath}_1" echo new $buildpath fi count=1 while [[ -d $buildpath ]]; do if [ $count == 1 ]; then buildpath=${buildpath}_$count fi buildpath=${buildpath:0:-2}_$count let count=count+1 echo New $buildpath done echo Final $buildpath mkdir $buildpath cd $buildpath echo PWD is $PWD if ! [ $buildpath == $PWD ]; then echo CD failed exit 1 else echo same directory fi |
taking input parameter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/bin/bash #------------------------------- # Fred Oh (email) # 2015/01/01 starting new life #------------------------------- today=` date +%m%d` source ~/.bashrc #check input is NULL if [ -z $1 ]; then echo "give me AU label" exit 1 fi echo "AU Lable = $1" #or check input is NULL or not if [ "$1" != "" ]; then echo "Positional parameter 1 contains something" else echo "Positional parameter 1 is empty" fi |
Sync to latest label and Build
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #!/bin/bash #------------------------------- # Fred Oh (email) # 2015/01/01 starting new life #------------------------------- today=` date +%m%d` source ~/.bashrc au_archive_dir= "...../LA.BF64.1.2.1" branch_name= 'LA.BF64.1.2.1' au_prefix= 'AU_LINUX_ANDROID' cd $au_archive_dir #must be 16 character like 05.01.00.066.083 #Fred don't know why post_fix_temp ends up with ':', need to remove ':' post_fix_temp=` ls -t 05.01.00.0[0-9][0-9].[0-9][0-9][0-9] | head -1` echo $post_fix_temp post_fix= "${post_fix_temp//:}" echo $post_fix #au_number="${post_fix:-3:3}" doesn't work T.T au_number= "${post_fix:13:3}" echo TODAY_AU ${today}_au${su_number} buildpath= "/local/mnt/workspace/hyosubo/8992_au${au_number}" count=1 while [[ -d $buildpath ]]; do if [ $count == 1 ]; then buildpath=${buildpath}_$count fi buildpath=${buildpath:0:-2}_$count let count=count+1 echo new $buildpath done mkdir $buildpath cd $buildpath echo PWD is $PWD if ! [ $buildpath == $PWD ]; then echo CD failed $buildpath $PWD exit 1 fi au_name=$au_prefix '_' $branch_name '.' $post_fix echo $au_name #/usr/local/bin/repo init -u git://git.quicinc.com/platform/manifest.git -b LA.BF64.1.2.1 /usr/local/bin/repo init -u git: //git .quicinc.com /platform/manifest .git -b refs /tags/ $au_name -m versioned.xml touch README2.txt /usr/local/bin/repo sync -j8 -q #/usr/local/bin/repo sync -j8 > reposync_$today.txt #/usr/local/bin/repo forall -c 'git checkout -b au33 AU_LINUX_ANDROID_KK.04.04.04.010.033' #/usr/local/bin/repo start tip$today --all source build /envsetup .sh lunch msm8992-userdebug /usr/bin/make -j12 > Buildlog_$today.txt |
'Programming' 카테고리의 다른 글
Web Sequence diagram blog에 넣기 (0) | 2015.04.16 |
---|---|
Popcorn Time clone해서 build하기 (0) | 2015.04.14 |
BAT/CMD windows script to EXE executable converter (0) | 2015.03.17 |
windows batch file tips (0) | 2015.03.14 |
syntax highlight test (0) | 2015.03.03 |