# cd ~ # vi test.sh 다음과 같이 작성
#! /bin/bash echo "Hello bash"
# ls -al drwx------ 1 root root 4096 Oct 8 15:27 . drwxr-xr-x 1 root root 4096 Oct 8 07:35 .. -rw-r--r-- 1 root root 32 Oct 8 15:27 test.sh
# chmod +x test.sh # ./test.sh Hello bash #
# 기호로 시작하는 라인은 주석처리 예) # This is comment
예) #!/bin/bash mysql_id='root' mysql_directory='/etc/mysql' echo $mysql_id echo $mysql_directory
#! /bin/bash daemons=("httpd" "mysqld" "vsftpd") echo ${daemons[1]} # $daemons 배열의 두 번째 인덱스에 해당하는 mysqld 출력 echo ${daemons[@]} # $daemons 배열의 모든 데이터 출력 echo ${daemons[*]} # $daemons 배열의 모든 데이터 출력 echo ${#daemons[@]} # $daemons 배열 크기 출력 filelist=( $(ls) ) # 해당 쉘스크립트 실행 디렉토리의 파일 리스트를 배열로 $filelist 변수에 입력 echo ${filelist[*]} # $filelist 모든 데이터 출력
$$ : 쉘의 프로세스 번호 $0 : 쉘스크립트 이름 $1 ~ $9 : 명령줄 인수 $* : 모든 명령줄 인수리스트 $# : 인수의 개수
예) num=`expr \( 3 \* 5 \) / 4 + 7` echo $num
문자1 == 문자2 # 문자1 과 문자2가 일치 문자1 != 문자2 # 문자1 과 문자2가 일치하지 않음 -z 문자 # 문자가 null 이면 참 -n 문자 # 문자가 null 이 아니면 참 문자 == 패턴 # 문자열이 패턴과 일치 문자 != 패턴 # 문자열이 패턴과 일치하지 않음
값1 -eq 값2 # 값이 같음(equal) 값1 -ne 값2 # 값이 같지 않음(not equal) 값1 -lt 값2 # 값1이 값2보다 작음(less than) 값1 -le 값2 # 값1이 값2보다 작거나 같음(less or equal) 값1 -gt 값2 # 값1이 값2보다 큼(greater than) 값1 -ge 값2 # 값1이 값2보다 크거나 같음(greater or equal) 값1 -gte 값2 # 값1이 값2보다 크거나
-e 파일명 # 파일이 존재하면 참 -d 파일명 # 파일이 디렉토리면 참 -h 파일명 # 심볼릭 링크파일 -f 파일명 # 파일이 일반파일이면 참 -r 파일명 # 파일이 읽기 가능이면 참 -s 파일명 # 파일 크기가 0이 아니면 참 -u 파일명 # 파일이 set-user-id가 설정되면 참 -w 파일명 # 파일이 쓰기 가능 상태이면 참 -x 파일명 # 파일이 실행 가능 상태이면 참
조건1 -a 조건2 # AND 조건1 -o 조건2 # OR 조건1 && 조건2 # 양쪽 다 성립 조건1 || 조건2 # 한쪽 또는 양쪽다 성립 !조건 # 조건이 성립하지 않음 true # 조건이 언제나 성립 false # 조건이 언제나 성립하지 않음
기본 if/else 구문
if [ 조건 ] then 명령문 else 명령문 fi
예) #!/bin/bash ping -c 1 192.168.0.1 1> /dev/null if [ $? == 0 ] then echo "게이트웨이 핑 성공!" else echo "게이트웨이 핑 실패!" fi
기본 if 구문
if [ 조건 ] then 명령문 fi
예) #!/bin/bash if [[ $1 != $2 || -z $2 ]] then echo "입력한 값이 일치하지 않습니다." exit fi
기본 if 구문 (한 라인에 작성하는 방법)
if [ 조건 ]; then 명령문; fi
예) if [[ -z $1 ]]; then echo "인수를 입력하세요"; fi
if [ 뒤와, ] 앞에는 반드시 공백이 있어야 함
기본 for 구문
for 변수 in 변수값1 변수값2 ... do 명령문 done
예1) #!/bin/bash for database in $(ls) do echo ${database[*]} done
예2) #!/bin/bash for database in $(ls); do echo ${database[*]} done
예3) #!/bin/bash for database in $(ls); do echo ${database[*]}; done
기본 while 구문
while [ 조건문 ] do 명령문 done
예) #!/bin/bash lists=$(ls) num=${#lists[@]} index=0 while [ $num -ge 0 ] do echo ${lists[$index]} index=`expr $index + 1` num=`expr $num - $index` done