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' 카테고리의 다른 글

쉘스크립트  (0) 2014.05.09
리눅스 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

+ Recent posts