처음 시작은
#!/bin/sh

Perl 처음 시작은
#!/usr/bin/perl -w

argument는 $0 $1 $2 ...
argument 처리는 아래 형식.
for ARGUMENT in "$@"; do
case $ARGUMENT in
--commit)
COMMIT=$2;
;;
--uploader)
UPLOADER=$2;
;;
--branch)
BRANCH=$2;
;;
--patchset)
PATCHSET_ID=$2;
;;
--change-url)
CHANGE_URL=$2;
CHANGE_NO=`basename $CHANGE_URL`;
;;
esac

shift;
done

Perl에서 Argument 처리는
$ARGV[0], $ARGV[1], $ARGV[2]... $#ARGV 는 argument 개수
 
공백으로 나눠진 파라미터 프린트
gawk '{print $1}'

/로 나눠진 마지막 파라미터 프린트. cut 도 사용가능
gawk -F / '{print $NF}'

파일명 얻기는
basename 경로명

디렉토리명 얻기는
dirname 경로명

절대경로 얻을 때는
readlink -e 상대경로

특정 문자열 치환은
sed -e "s/문자열/문자열/g"

if는 이런 형식. 비교식은 http://www.gnu.org/s/bash/manual/bash.html#Bash-Conditional-Expressions 참고
if [ "$변수" = "" ]; then
  명령;
elif
  명령;
else
  명령;
fi

for each 는 이런 형식
for 변수 in $가져올변수
do
  echo "$변수"
done

case는 위의 argument 처리 참고.

명령의 결과 저장은 `명령`
변수의 값으로 치환한 문자열은 "$변수 포함 문자열"
그냥 그대로 문자열은 '문자열'

끝에만 자를 땐
tail -n 숫자

앞에만 자를 땐
head -n 숫자

문자열 있는 줄만 얻고 싶을 땐
grep "문자열"

정규식으로 찾은 문자열 포함된 줄만 얻고 싶을 땐
grep -P "^문자열[0-9a-zA-Z-_/]*$"

basic http 인증은 https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients 참고

html 얻어올 때는
curl "주소"


IF 문에서 수식을 사용하고 싶을 때, 예를 들면, 에러 체크를 위해 루프를 도는 개수등을 카운트하고 싶다면 SET 에서 /A 옵션을 사용하고 IF에서 비교 연산자를 사용하면 된다. IF 문의 비교 연산자는 다음과 같다

EQU - 같음
NEQ - 같지 않음
LSS - 보다 작은
LEQ - 작거나 같음
GTR - 보다 큰
GEQ - 크거나 같음


다음은 start 로 3가지 일을 동시에 처리한 후 goto와 label을 이용, cygwin의 delay로 일정 시간 체크한 후 그 후 에러로 처리하는 bat 파일의 예다.

@echo off
SET /A LOOP_COUNT=1
SET /A LOOP_MAX_COUNT=5
SET CYGWIN_DELAY=[Cygwin 경로]\delay.exe
SET DELAY_TIME=5m

rem WORK1, 2, 3를 동시에 돌린다. 다음 작업에 dependency 가 있는 작업에
rem start의 /W 옵션을 주어 기다리도록 한다.

start WORK1.bat
start WORK2.bat
start /W WORK3.bat

goto CHECK

:DELAY
rem if LOOP_COUNT >= LOOP_MAX_COUNT
IF %LOOP_COUNT% GEQ %LOOP_MAX_COUNT% (
echo ERROR!
exit 1
)
rem Delay 한다.
%CYGWIN_DELAY% %DELAY_TIME%

rem LOOP_COUNT += 1
SET /A LOOP_COUNT+=1

:CHECK
echo Checking...
IF [WORK1 실패조건] (
echo Work 1 is Failed!
goto DELAY
)
echo Work1 is success!
IF [WORK2 실패조건] (
echo Work 2 is Failed!
goto DELAY
)
echo Work2 is success!
IF [WORK3 실패조건] (
echo Work 3 is Failed!
goto DELAY
)
echo Work3 is success!

call WORK4.bat
Tag // /A, BAT, Batch, If, SET, 비교