특정 키워드 

● $# : 명령입력 라인에서 입력된 인수의 개수를 가짐

● $* : 명령입력 라인에서 입력된 전체의 내용을 포함($1 ~ $n)

● $$ : 쉘 프로그램이 실행되면서 사용된 프로세스의 ID 값

● $! : 쉘 프로그램이 실행시킨 백그라운드 프로세스의 ID 값

#!/bin/sh

 

echo "======================="
echo "인수의 개수:$#"
echo "전체인수의 개수:$*"
echo "쉘 프로그램이 실행되면서 사용된 프로세스의 ID:$$"
echo "쉘 프로그램이 실행시킨 백그라운드 프로세스의 ID:$!"

[결과]

$ ./keyworld.sh
=======================
인수의 개수:0
전체인수의 개수:
쉘 프로그램이 실행되면서 사용된 프로세스의 ID:5552
쉘 프로그램이 실행시킨 백그라운드 프로세스의 ID:

 

$ ./keyworld.sh 123
=======================
인수의 개수:1
전체인수의 개수:123
쉘 프로그램이 실행되면서 사용된 프로세스의 ID:5732
쉘 프로그램이 실행시킨 백그라운드 프로세스의 ID:

 

$ ./keyworld.sh 123 456 789
=======================
인수의 개수:3
전체인수의 개수:123 456 789
쉘 프로그램이 실행되면서 사용된 프로세스의 ID:5756
쉘 프로그램이 실행시킨 백그라운드 프로세스의 ID:

 

 

 조건문에서 사용하는 연산자들 

문자열 체크

[ str ]

 문자열이 NULL인지 체크 => NULL이 아니면 True

[ -n str ]

 문자열의 사이즈가 0 이상인지를 체크 => 0 이상이면 True 

[ -z str ]

 문자열의 사이즈가 0 인지 체크 => 0 이면 True 

[ strA = strB ]

 A문자열과 B문자열이 같은지 체크 => 같으면 True

[ strA != strB ]

 A문자열과 B문자열이 다른지 체크 => 다르면 True

숫자 대소 관계 체크

[ num -gt 100 ]

 num이 100보다 큰지 체크 => 100 초과면 True 

[ num -ge 100 ]

 num이 100보다 크거나 같은지 체크 => 100 이상이면 True 

[ num -lt 10 ]

 num이 10보다 작은지 체크 => 10 미만이면 True 

[ num -le 10 ]

 num이 10보다 작거나 같은지 체크 => 10 이하면 True 

파일 체크

[ -r filename ]

 해당 파일이 읽기 가능한지 체크 

[ -w filename ]

 해당 파일이 쓰기 가능한지 체크 

[ -x filename ]

 해당 파일이 실행 가능한지 체크 

[ -s filename ]

 해당 파일의 사이즈가 0 이상인지 체크 

[ -d filename ]

 해당 파일이 디렉토리 파일인지 체크 

[ -f filename ]

 해당 파일이 일반 파일인지 체크 

[ -h filename ]

 해당 파일이 링크 파일인지 체크 

조건문의 결합

[ 조건문A -a 조건문B ]

 -a => AND 

[ 조건문A -o 조건문B ]

 -o => OR 

 

 

 

if문 

● if01.sh

#!/bin/sh

 

echo "if test"

 

if [ 11 -le 2 ]
then
  echo "aaaa"
else
  echo "bbbb"
fi 

[결과]

if test
bbbb

 

● if02.sh

#!/bin/sh

 

if [ $# -ge 3 ]
then
  echo "AAAAA"
elif [ $# -ge 2 ]
then
  echo "BBBBB"
else
  echo "CCCCC"
fi

[결과]

$ ./if02.sh
CCCCC

 

$ ./if02.sh 111
CCCCC

 

$ ./if02.sh 111 222
BBBBB

 

$ ./if02.sh 111 222 333
AAAAA

 

● if03.sh

#!/bin/sh

 

echo "점수를 입력하시오."
read num

 

if [ $num -ge 90 ]
then
  echo "수"
else
  if [ $num -ge 80 ]
  then
    echo "우"
  else
    echo "미"
  fi
fi

[결과]

$ ./if03.sh
점수를 입력하시오.
98

 

$ ./if03.sh
점수를 입력하시오.
80

 

$ ./if03.sh
점수를 입력하시오.
52

 

 

case문

● case.sh

#!/bin/sh

 

echo "1. 사용자 목록"
echo "2. 현재 디렉토리 파일명"
echo "3. 사용자 관련 프로세스"
echo "4. 사용자 ID출력"


echo
echo "출력 ----->"

read key

 

case $key in
   1)
      whoami
      ;;
   2)
      ls -l
      ;;
   3)
      ps
      ;;
   4)
      id
      ;;
   *)
      echo "잘못 입력 되었습니다"
      ;;
esac

[결과]
1. 사용자 목록
2. 현재 디렉토리 파일명
3. 사용자 관련 프로세스
4. 사용자 ID출력

출력 ----->
2
합계 3
-rw-r--r-- 1 soonwoo None  94 1월  21 15:06 ~
-rwxr--r-- 1 soonwoo None 367 1월  21 15:33 case.sh
-rwxr--r-- 1 soonwoo None  99 1월  21 15:25 if.sh

 

 

for문

● for01.sh

#!/bin/sh

 

for tmp in AAA BBB CCC
do
  mkdir $tmp
  touch $tmp/touchFile
done

[결과]

$ ls -R


.:
~  AAA  BBB  case.sh  CCC  for.sh  if.sh

./AAA:
touchFile

./BBB:
touchFile

./CCC:
touchFile

 

● for02.sh

#!/bin/sh

 

for var in `ls`
do
  echo $var
done

[결과]

~
AAA
BBB
case.sh
CCC
for.sh
for02.sh
if.sh

 

● for03.sh 

#!/bin/sh

 

for var in $*
do
  echo "$var 실행"
  $var
done

[결과]

$ ./for03.sh ls ls


ls 실행
~    BBB      CCC     for02.sh  if.sh    if03.sh      unset.sh    while02.sh
AAA  case.sh  for.sh  for03.sh  if02.sh  keyworld.sh  while01.sh  while03.sh
ls 실행
~    BBB      CCC     for02.sh  if.sh    if03.sh      unset.sh    while02.sh
AAA  case.sh  for.sh  for03.sh  if02.sh  keyworld.sh  while01.sh  while03.sh

 

 

while문

● while01.sh

#!/bin/sh

 

x=1

while [ $x -lt 5 ]
do
  echo "x = $x"
  x=$(($x + 1))
done

[결과]

x = 1
x = 2
x = 3
x = 4

 

● while02.sh

#!/bin/sh

 

while :
do
  echo "숫자를 입력하시오."
  read num

 

  if [ $num -ge 10 ]
  then
    echo "시스템을 종료합니다."
    break
  else
    echo "입력한 숫자는 $num입니다."
  fi
done

[결과]

숫자를 입력하시오.
8
입력한 숫자는 8입니다.
숫자를 입력하시오.
2
입력한 숫자는 2입니다.
숫자를 입력하시오.
31
시스템을 종료합니다.

 

● while03.sh

#!/bin/sh

 

while :
do
  read -p "숫자를 입력하시오 : " num1 num2

 

  if [ $num1 -eq 1 ]
  then
    echo "시스템 종료"
    break
  else
    ans=$((num1 + num2))
    echo "num1 + num2 = $ans"
  fi
done

[결과]

숫자를 입력하시오 : 5 10
num1 + num2 = 15
숫자를 입력하시오 : 4 3
num1 + num2 = 7
숫자를 입력하시오 : 0 1
num1 + num2 = 1
숫자를 입력하시오 : 1 32
시스템 종료

 

 

 u 

● unset.sh

#!/bin/sh

 

name="snoopy 123"
echo $name

echo "======================="

unset name
echo $name

[결과]

snoopy 123
=======================

 


 

 

 

 

 

+ Recent posts