1. 큰 따옴표는 변수 값으로 치환되고 작은 따옴표는 변수명 자체를 출력

# message="Hello" (등호 사이에 공백이 없어야 함)

# echo "$message"

Hello


# echo '$message'

$message


2. 큰 따옴표 안에 $를 문자로 쓰고 싶으면 \ 를 사용

# echo "\$message = $message"

$message = Hello


3. 큰 따옴표 안에 변수명과 다른 문자를 계속 적을 경우에는 변수명을 {} 로 감쐄

# echo "${message}Word"

HelloWord


4. 큰 따옴표 안에 큰 따옴표를 사용할려면 \를 사용

# echo "Hello \"World\""

Hello "World"


5. 작은 따옴표안에 작은 따옴표는 사용할 수 없으나 다음과 같이 사용은 가능

# echo 'Hello '\''World'\'

Hello 'World'


'Hello ' + \' + 'World' + \' 와 같은 의미임


6. 큰 따옴표 없이 변수만 사용할 때 변수 값에 * ? 등 와일드카드가 있으면 파일명을 표시, 일치하는 파일명이 없으면 그대로 표시

# touch HelloWorld.txt

# message="Hello*"

# echo $message

HelloWorld.txt


# rm HelloWorld.txt

# echo $message

Hello*


7. 조건식

[[ 조건식 ]] 으로 조건 판별

-z 문자열 : 빈문자열

-n 문자열 : 빈문자열 아님

문자열 == 문자열 : 문자열 패턴 일치 (= 도 같은 의미)

문자열 != 문자열 : 문자열 패턴이 일치하지 않음

-e 파일명 : 파일이 존재함

-d 파일명 : 디렉토리

-h 파일명 : 심볼릭 링크

-f 파일명 : 일반 파일

조건1 && 조건2 : 모두 true

조건1 || 조건2 : 둘 중 하나만 true

!조건1 : 조건이 성립하지 않음

true : 언제나 성립

false : 언제나 성립하지 않음

0 : true

0 이외의 값 : false

#! /bin/sh

message="Hello"


if [[ $message == "Hello" ]]; then

echo "Hello World"

fi


8. 커맨드 값

커맨드 리턴값 0 : true

커맨드 리턴값 0 이외의 값 : false

$? : 바로 이전에 실행한 커맨드의 리턴값

if grep "Hello" /tmp/tmp0 >/dev/null 2>&1; then # grep 에 매칭하는 문자가 있으면 0 을 리턴 true

echo "Hello World"

if


grep "Hello" /tmp/tmp0 >/dev/null 2>&1

rc=$?

if [[ $rc -eg 0 ]]; then

echo "Hello World"

if


9. 배열

{} : 배열 참조

{#} : 배열의 갯수

@ : 배열을 나열

$0 : 쉘스크립트 명령어

$1~$9 : 쉘스크립트의 인수 참조

$@ : 쉘스크립트 명령어 포함 모든 인수 나열

shift : 쉘스크립트 인수를 shift 지정한 횟수만큼 shift 한다.

파일명 : params.sh


#! /bin/sh


# fruits[0]="Apple"

# fruits[1]="Grape"

# fruits[2]="Orange"

# echo "${fruits[0]}" "${fruits[1]}" "${fruits[2]}"

Apple Grape Orange


# fruits=( "Apple" "Grape" "Orange" )

# echo "${fruits[0]}" "${fruits[1]}" "${fruits[2]}"

Apple Grape Orange


# echo "${#fruits[@]}"

3

# echo "${fruits[@]}}"

Apple Grape Orange


# echo $0

for item in "$@"; do

echo $item

done


while [[ "$@" != "" ]]; do

echo "$@"

shift

done


10. 커맨드 치환과 수치연상

$() : 커맨드를 출력 결과

$(()) : 수치 연산

# message="sh 의 경로는 $(which sh) 입니다."

# ehco $message

sh 의 경로는 /bin/sh 입니다.


11. 서버 리스트의 free 메모리 보기

파일명 : servers.txt

root@server01.com

root@server02.com

root@server03.com

파일명 : servers.sh

#! /bin/sh


file=$1

shift


while read server; do

ssh -n "$server" "$@" 2>$1 | sed "s/^/$server: /" &

done <"$file"

wait

# ./servers.sh servers.txt free


'Database > Server' 카테고리의 다른 글

리눅스 date 명령 : 어제(과거) , 내일(미래) 날짜, 시간 구하기  (0) 2013.10.11
# ACL (Access Control List)  (0) 2010.06.10
RSH 설정  (0) 2010.06.10
lsvg 명령어  (0) 2010.05.26
RAID 종류 및 설명  (0) 2010.05.20

 

과거


date -d 'yesterday'		# 어제
date -d '1 day ago' # 1일전 = 어제
date -d '2 day ago' # 2일전
date -d '35 day ago' # 20일전
date -d '1 week ago' # 1주일전
date -d '2 month ago' # 1달전
date -d '3 year ago' # 3년전
date -d '10 second ago' # 10초전
date -d '20 minute ago' # 20분전
date -d '30 hour ago' # 30시간전
date -d '3 year 7 month ago' # 3년 7개월전



미래

* 과거에서 ago 를 빼면 됨

date -d 'tomorrow'		# 내일
date -d '1 day' # 1일후 = 내일
date -d '2 day' # 2일후
date -d '35 day' # 20일후
date -d '1 week' # 1주일후
date -d '2 month' # 1달후
date -d '3 year' # 3년후
date -d '10 second' # 10초후
date -d '20 minute' # 20분후
date -d '30 hour' # 30시간후
date -d '3 year 7 month' # 3년 7개월후


요일 기준


date -d 'this friday'	# 이번주 금요일
date -d 'last monday' # 지난 월요일
date -d 'next tuesday' # 다음 화요일


특정 시간을 기준으로 날짜 더하고 빼기


date -d '2010-01-03 07:32:10 + 2 day 5 hours 17 minute'	
# 2010년 1월 3일 7시 32분 10초를 기준으로 2일 5시간 17분후


옵션 1


-d 는 --date 옵션으로 사용해도 됩니다. --date 로 쓸때에는 --date= 형식으로 사용하시면 됩니다.

date --date='2 month'


옵션 2


시간단위를 나타내는 day, week, month, year, second, minute, hour 등은 뒤에 s(복수)를 붙여도 되고 안붙여도 됩니다.

date -d '1 day ago'
date -d '1 days ago'


옵션 3


시간을 원하는 형식으로 뽑기위해서는 아래같이 하시면 됩니다.

현재 시간으로부터 2일전의 년-월-일 시:분:초 형식으로 표시하려면

date '+%Y-%m-%d %H:%M:%S' -d '2 day ago'


쉘스크립트에서 해당 시간을 변수에 담기


보통 위와 같은 date 함수는 주로 쉘스크립트에서 사용하게 됩니다. 리눅스 명령으로 가져온 결과값을 변수에 담으려면

yesterday=$(date -d '1 day ago')

또는

yesterday=`date -d '1 day ago'`

변수를 사용할때는

echo $yesterday

'Database > Server' 카테고리의 다른 글

쉘스크립트  (0) 2014.05.09
# ACL (Access Control List)  (0) 2010.06.10
RSH 설정  (0) 2010.06.10
lsvg 명령어  (0) 2010.05.26
RAID 종류 및 설명  (0) 2010.05.20

http://genes1s.egloos.com/2369915

'Database > Server' 카테고리의 다른 글

쉘스크립트  (0) 2014.05.09
리눅스 date 명령 : 어제(과거) , 내일(미래) 날짜, 시간 구하기  (0) 2013.10.11
RSH 설정  (0) 2010.06.10
lsvg 명령어  (0) 2010.05.26
RAID 종류 및 설명  (0) 2010.05.20
http://yaaong.tistory.com/28

'Database > Server' 카테고리의 다른 글

리눅스 date 명령 : 어제(과거) , 내일(미래) 날짜, 시간 구하기  (0) 2013.10.11
# ACL (Access Control List)  (0) 2010.06.10
lsvg 명령어  (0) 2010.05.26
RAID 종류 및 설명  (0) 2010.05.20
유닉스 명령어  (0) 2010.04.07

+ Recent posts