[실행]
- 실행 퍼미션 설정 : #chmod +x [Shell 파일]
- Script 실행 : #./[파일이름] 또는 #sh [파일이름]
[Shell 정보 입력]
- Script 작성시 첫 라인 표기
Bash 쉘 : #!/bin/bash
korn 쉘 : #!/bin/ksh
tcsh 쉘 : #!/bin/tcsh
[ 아규먼트 변수 ]
- 특별한 내장변수로 위치 매개변수로 사용한다.
- 매개변수를 불러올때 스크립트의 명령행 인자로 사용한다.
option
- $0 : 실행된 쉘 스크립트 이름
- $1 : 스크립트에 넘겨진 첫번째 아규먼트
- $2 : 스크립트에 넘겨진 두번째 아규먼트
- $# : 스크립트에 넘겨진 아규먼트의 개수
- $$ : 쉘스크립트의 프로세스ID
- $? : "[ '$?' 종료코드 ]" 참조
- $* : 스크립트에 전달된 인자 전체를 하나의 변수에 저장하며 IFS환경변수의 첫번째 문자로 구분
- $@ : $*와 동일 (다른점은 IFS환경변수를 사용하지 않음)
[ '$?' 종료코드 ]
- 0 (성공) , 1 ~ 125 (에러) , 126 (파일이 실행가능하지 않음) , 128 ~ 255 (시그널 발생)
예)
#vi argument.sh
------------------------------------------------------------------------------------------------------------------
#!/bin/bash
echo "This script file $0"
echo "Argument Count is $#"
echo "Process ID is $$"
echo "Argument List \$* : $*"
echo "Argument List \$@ : $@"
echo "Argument 1 : $1"
echo "Argument 1 : $2"
echo "Argument 1 : $3"
echo "This script code $?"
------------------------------------------------------------------------------------------------------------------
#./argument.sh a b c
- This script file ./argument.sh
- Argument Count is 3
- Process ID is 31779
- Argument List $* : a b c
- Argument List $@ : a b c
- Argument 1 : a
- Argument 2 : b
- Argument 3 : c
- This script code 0
[산술비교]
- [ $A -eq $B ] : A와 B가 같으면 참 (Equal)
- [ $A -ne $B ] : A와 B가 같지 않으면 참 (Not Equal)
- [ $A -gt $B ] : A가 B보다 크면 참 (Greater Then)
- [ $A -ge $B ] : A가 B보다 크거나 같으면 참 (Greater Equal)
- [ $A -lt $B ] : A가 B보다 작으면 참 (Less Then)
- [ $A-le $B ] : A가 B보다 작거나 같으면 참 (Less Equal)
- [ ! $A ] : A가 참이면 거짓, 거짓이면 참
- [ $A -a $B ] : $A AND $B의 결과, 둘 다 참이면 참
- [ $A -o $B ] : $A OR $B의 결과 , 둘 중 하나만 참이면 참
[문자열비교]
- [ string ] : string 이 빈 문자열이 아니면 참
- [ string1 = string2 ] : 두 문자열이 같으면 참
- [ srting1 != string2 ] : 두 문자열이 다르면 참
- [ -n string ] : 문자열이 null (빈문자열)이 아니면 참
- [ -z string ] : 문자열이 null (빈문자열)이면 참
[파일조건]
- [ -b FILE ] : FILE 이 블럭디바이스이면 참
- [ -c FILE ] : FILE 이 문자디바이스이면 참
- [ -d FILE ] : FILE 이 디렉토리이면 참
- [ -e FILE ] : FILE 이 존재하면 참
- [ -f FILE ] : FILE 이 존재하고 크기가 0보다 크면 참
- [ -g FILE ] : FILE 이 SGID 가 있으면 참
- [ -u FILE ] : FILE 에 SUID 가 있으면 참
- [ -k FILE ] : FILE 에 Sticky bit 가 있으면 참
- [ -L FILE ] : FILE 이 심볼릭링크이면 참
- [ -S FILE ] : 소켓디바이스이면 참
- [ -r FILE ] : 현재 사용자가 읽을 수 있는 파일이면 참
- [ -s FILE ] : 파일이 비어있지 않으면 참
- [ -t FD ] : FD (File Descriptor)가 열려진 터미널이면 참
- [ -w FILE ] : 현재 사용자가 쓸 수 있는 파일이면 (Writable file) 참
- [ -x FILE ] : 현재 사용자가 실행할 수 있는 파일이면 (Excute file) 참
- [ -O FILE ] : FILE 의 소유자가 현재 사용자이면 참
- [ -G FILE ] : FILE 의 그룹이 현재 사용자의 그룹과 같으면 참
- [ FILE1 -nt FILE2 ] : FILE1 이 FILE2 보다 새로운 파일 (최근의 파일)이면 참
- [ FILE1 -ot FILE2 ] : FILE1 이 FILE2 보다 오래된 파일이면 참
- [ FILE1 -ef FILE2 ] : FILE1 이 FILE2 의 하드링크, 즉 I-node 값이 같으면 참