#!/bin/sh

#free 중에서 원하는 부분만 저장
Total="$(free | grep '^Mem' | awk '{print $2}')"       
Used="$(free | grep '^-/' | awk '{print $3}')"

# 사용량 퍼센테이지 계산. 계산 과정에 대해 알려면 free라고 블로그내에서 검색하면 나옴
Check="$(($Used * 100 / $Total))"

#지금 열려있는 터미널채크
var="$(w | awk '{ print $2}' | egrep 'pts|tty')"


if [ $Check -ge 10 ]
then 
 for Var in $var
 do
  echo "당신의 메모리가 곧 터질거 같네요" > /dev/$Var
 done
fi


 

AND


#!/bin/sh

# 이렇게 사용하면 w 명령어로 부터 나온 결과를 var에 저장됨 = 모든 터미널을 채크
var="$(w | awk '{ print $2}' | egrep 'pts|tty')"

# var에 담긴 결과의 갯수만큼 돌기
for Var in $var
do
 df -h | grep '^/dev' | sed 's/%//g' | awk '$5 > 10 { print " 당신의 디스크는 곧 터질거같네요"}' > /dev/$Var
done

 

AND

##정수비교

#!/bin/sh
echo " input ? > "
read x
xx=10

if [ $x -gt $xx ]
then 
 echo "$x is more then $xx"
elif [ $x -lt $xx ]
then
 echo "$x is less then $xx"
elif [ $x -eq $xx ]
then
 echo "$x is equal $xx"
fi

#let

#!/bin/sh

a=16
let "a<<=3"
echo "$a"

let "a-=5"
echo "$a"




##select

#!/bin/bash

echo "?ㅼ쓬以??ㅽ겕由쏀듃?몄뼱 ?꾨줈洹몃옒諛띿뿉 ?랁븯??寃껋??"
select var in "?섑봽濡쒓렇?섎컢" "C?꾨줈洹몃옒諛? "?먮컮?꾨줈洹몃옒諛? "Exit"
do
 if [ "$var" = "?섑봽濡쒓렇?섎컢" ]
 then
  echo "correct"
  exit 0
 elif [ "$var" = "Exit" ]
 then
  echo "Exiting...."
  exit 1
 else
  echo "$var ???좏깮?섏뀲?듬땲?? ?ㅻ떟?낅땲??"
  echo "?ㅼ쓬以??ㅽ겕由쏀듃?몄뼱 ?꾨줈洹몃옒諛띿뿉 ?랁븯??寃껋??"
 fi
done



###for

#!/bin/sh

for aaa in you are so beautiful
do
 echo $aaa
done



###else if 다중조건

echo "what is color ?"
read color
if [ "$color" = "white" ]
then
 echo "color is white"
elif [ "$color" = "blue" -o "$color" = "sky" ]
then
 echo "color is blue"

else
 echo "what the fffffffffff"
fi

if [ $S -lt 0 -o $S -gt 100 ]
then
 echo "猷⑥?猷⑥? ?묐컮濡쒖엯?ν븯?몄슂 猷⑥?猷⑥?!"
elif [ $S -ge 90 ]
then
 echo "?뱀떊?€ 泥쒖옱"
elif [ $S -ge 80 ]
then
 echo "?뱀떊?€ ?쇰컲??
elif [ $S -ge 70 ]
then
 echo "醫€?꾪뿕?⑸땲?? 猷⑥???媛€?μ꽦??蹂댁엯?덈떎..."
else
 echo "猷⑥?猷⑥?!"
fi



####case

#!/bin/sh

echo "What is color ?"
read color

case "$color" in
'white')
 echo "color is white"
 ;;
'black')
 echo "color is block"
 ;;
*)
 echo " nonono"
 ;;
esac



###구구단

#!/bin/sh
for aaa in 2 3 4 5 6 7 8 9
do
 for bbb in 1 2 3 4 5 6 7 8 9
 do
  echo "$aaa X $bbb = $(($aaa * $bbb)) "
 done
done




##shift

#!/bin/sh
while [ $# -gt 0 ]
do
 echo $*
 shift
done



### trap

#!/bin/sh
trapper()
{
 echo "in Trapper"
 trap 'echo "caught in a trap~"' 2
}

while :
do
 echo "In the main script"
 trapper
 echo "Still in main"
 sleep 2
done


#trap 2
#!/bin/sh

trap 'echo "control "' 2

while true
do
 echo "asdfasdf"
 sleep 1
done


## data.txt
hong 28 011-222-2222 seoul
park 34 017-333-3333 kyunggi
im 23 019-444-4444 chungnam
son 49 016-555-5555 us
gil 19 018-666-6666 korea
jang 21 011-7777-7777 japan
lee 16 016-8888-8888 china
sa 45 017-9999-9999 canada
hwang 32 015-555-5555  kwangju


AND



 df | grep "^/dev" | cut -d " " -f 1.3
   

 

tail -5 /etc/passwd | cut -d ":" -f 1,3-5

past -s -d "\t" exam1 exam2

sort -t : -k3 -n /etc/passwd

'프로그래밍 > Shell Programming' 카테고리의 다른 글

하드디스크 사용량 계산해서 터미널에 뿌려주는 script  (0) 2011.07.13
쉘스크립트 예제 코드  (0) 2011.07.13
set과 env차이  (0) 2011.07.11
AWK 활용  (0) 2011.07.11
Shell Script 정리 된 자료  (0) 2011.07.11
AND

set이라는 유틸리티는 Shell에 built-in 된 유틸리티로 set 으로 선언된 변수 이름과 값을 보여 준다.

Env와 set의 차이는 env는 다른 응용 프로그램에서 사용할 환경 변수들을 정의한 것이고
set은 Shell 이 사용하기 위해 정의한 변수 들이다.

'프로그래밍 > Shell Programming' 카테고리의 다른 글

쉘스크립트 예제 코드  (0) 2011.07.13
cut, past, grep, sort, sed 명령어 예제  (0) 2011.07.12
AWK 활용  (0) 2011.07.11
Shell Script 정리 된 자료  (0) 2011.07.11
정수 및 문자열 비교  (0) 2011.07.11
AND

lastb | awk '{print $1}'                     여기서 ' 는 홑 따옴표
 

awk : 패턴 검색과 처리를 위한 언어

=> 명령어의 이름은 개발자인 Alfred V. Aho, Peter J. Weinberger, Brian W. Kernighan 3인의
    머리글자를 사용해서 만든 것이다.

  awk '{ action}' filename

# ls -l | awk '{print $0}'              # 전체 필드가 모두 나타나도록...

drwxr-xr-x   2   prof9i4  dba          512  4월   25일  15:44   a_dir
drwxr-xr-x   2   prof9i4  dba          512  4월   18일  23:53   b_dir

     $1         $2     $3        $4            $5  $6        $7     $8        $9 
                                                 $0                                                    

 

# ls -l | awk '{print $1}'                                        # 1번 필드만 나타도록...
# ls -l | awk '{print $1, $9}'                                  # 1번과 9번 필드만 나타나도록...
# ls -l | awk '{print $3 "\t" $4 "\t" $9}'                   # Tab 키가 적용된 결과...
# ls -lt | awk '{print $9, "is using", $5, "bytes"}'      # text 추가

# ls -lt | awk '$5 <= 200 {print $0}'                      # 5번 필드가 200 이하일 경우 출력 

'프로그래밍 > Shell Programming' 카테고리의 다른 글

cut, past, grep, sort, sed 명령어 예제  (0) 2011.07.12
set과 env차이  (0) 2011.07.11
Shell Script 정리 된 자료  (0) 2011.07.11
정수 및 문자열 비교  (0) 2011.07.11
시스템변수  (0) 2011.07.11
AND

'프로그래밍 > Shell Programming' 카테고리의 다른 글

set과 env차이  (0) 2011.07.11
AWK 활용  (0) 2011.07.11
정수 및 문자열 비교  (0) 2011.07.11
시스템변수  (0) 2011.07.11
test 명령 조건  (0) 2011.07.11
AND

변수에는  " "로 묶어주는게 좋다. 


-eq

같음

if [ "$a" -eq "$b" ]

-ne

같지 않음

if [ "$a" -ne "$b" ]

-gt

더 큼

if ["$a" -gt "$b" ]

-ge

더 크거나 같음

if [ "$a" -ge "$b" ]

-lt

더 작음

if [ "$a" -lt "$b" ]

-le

더 작거나 같음

if [ "$a" -le "$b" ]

<

더 작음(이중 소괄호에서)

(("$a" < "$b"))

<=

더 작거나 같음(이중 소괄호에서)

(("$a" <= "$b"))

>

더 큼(이중 소괄호에서)

(("$a" > "$b"))

>=

더 크거나 같음(이중 소괄호에서)

(("$a" >= "$b"))

 

문자열 비교

=

같음 

if [ "$a" = "$b" ]

==

같음

if [ "$a" == "$b" ]

= 와 동의어입니다.

!=

같지 않음

if [ "$a" != "$b" ]

이 연산자는 [[ ... ]] 에서 패턴 매칭을 사용합니다.

<

아스키 알파벳 순서에서 더 작음

if [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

"<" 가 [ ] 에서 쓰일 때는 이스케이프를 시켜야 하는 것에 주의하세요.

>

아스키 알파벳 순서에서 더 큼

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

">" 가 [ ] 에서 쓰일 때는 이스케이프를 시켜야 하는 것에 주의하세요.

이 비교 연산자를 어떻게 응용하는지 예 26-4에서 살펴보세요.

-z

문자열이 "null"임. 즉, 길이가 0

-n

문자열이 "null"이 아님.

'프로그래밍 > Shell Programming' 카테고리의 다른 글

AWK 활용  (0) 2011.07.11
Shell Script 정리 된 자료  (0) 2011.07.11
시스템변수  (0) 2011.07.11
test 명령 조건  (0) 2011.07.11
디스크 사용량 계산  (0) 2011.06.21
AND

Unix Linux에서는 OS 의해 사용되는 기본적인 변수(시스템 변수) 사용자 정의 변수 나뉠  있다.

 일반적으로 시스템 변수는 대문자로사용자 변수는 소문자로 표기한다.

1. 시스템 변수

 

 

PS1

bash  프롬프트

PS2

쉘의 하위 프롬프트 설정

PS3

select 문에서의 프롬프트

PS4

bash debug 모드에서의 프롬프트

HOME

사용자 홈디렉토리

PATH

실행 파일의 디렉토리 경로 지정

BASH

사용   경로

BASH_VERSION

bash 쉘의 버전

ENV

환경 설정 파일

USER

사용자

USERNAME

사용자 이름

SHELL

지정한   쉘의 경로

MAIL

메일 보관 디렉토리 경로

MAILCHECK

메일 확인 주기

MAILPATH

사용자 메일 경로 설정 변수

UID

사용자 UID 

GID

사용자 GID 

LOGNAME

현재 로그인한 사용자

LINES

터미널의 출력 라인 

HOSTNAME

호스트 이름

HOSTTYPE

현재 시스템의 CPU 타입

HISTFILESIZE

히스토리 파일 크기

HISTSIZE

히스토리 사용 개수

OSTYPE

운영체제의 타입

PWD

현재 디렉토리의 절대 경로

TERM

현재 사용 중인 터미널의 종류

COLUMNS

현재 사용 중인 터미널의 크기(기본 80컬럼)

LS_COLORS

파일 출력 명령어 사용시 파일의 종류에 따라 컬러 사용

IFS

인자 분리 매개 변수

CDPATH

디렉토리 패스 설정변수

SECONDS

bash 시작하여 경과된 시간

EUID

현재 로그인한 사용자의 UID

RANDOM

임의의 정수를 생성하는 변수

IGNOREEOF

입력행에서 EOF문자가 입력되었을  쉘의 종료를 제어

TMOUT

지정한 시간에 프롬프트의 입력이 없다면 로그 아웃

 외에도 많은 환경 변수들이 존재한다이는 env 명령어를 통해 확인   있다.

2. 
특별 내장 변수

 

 

$$

현재 실행중인 프로세스의 PID

$?

마지막에 실행한 명령어의 종료값을 반환하며 실행한 명령어의 에러  정상 실행을 파악하기 위해 사용

$!

마지막 자식 프로세스의 PID

$#

프롬프트 상에서 실행한 명령어나 함수에 의해 전달된 매개변수에 전달  인자의  개수

#0

명령어 실행  명령어를 저장하는 변수로 위치 매개변수라고 

$1,$2…

명령어에 전달된 전달 인수가 공백을 기준으로 각각 저장하며 위치 매개 변수라고 

$*

명령어에 전달된 전달 인수 전체를 하나의 문자열로 표시하며 전체가  따옴표로 처리

$@

전달 인수를 문자열의 목록으로 표시하며  인자에  따옴표로 처리

$_

프롬프트나 쉘에서 마지막에 전달된 명령어나 명령어에 전달된 인수 값을 저장하며 쉘명령어에 의해 설정  플래그


3. 일반 변수
사용자 정의 변수에 대해서는 크게 설명 할 것이 없다. 선언 하거나 대입 연산을 할 때는 변수의 이름만을 사용하고, 변수의 값을 참조 할 때는 변수 앞에 $를 붙여 준다. 또한 변수선언을 할때 공백문자가 들어가면 안된다.

#!/bin/bash
my_name="kukuta"  # my_name = "kukuta" (X)
echo $my_name

 


'프로그래밍 > Shell Programming' 카테고리의 다른 글

AWK 활용  (0) 2011.07.11
Shell Script 정리 된 자료  (0) 2011.07.11
정수 및 문자열 비교  (0) 2011.07.11
test 명령 조건  (0) 2011.07.11
디스크 사용량 계산  (0) 2011.06.21
AND


test 명령 조건

참이면 0
거짓이면1로나옴

확인 echo $?
 

문자열 비교
[ string ] - string이 빈 문자열이 아니라면 참
[ string1 = string2 ] - 두 문자열이 같다면 참
[ string1 != string2 ] - 두 문자열이 다르면 참
[ -n string ] - 문자열이 null(빈 문자열) 이 아니라면 참
[ -z string ] - 문자열이 null(빈 문자열) 이라면 참

 
산술 비교
[ expr1 -eq expr2 ] - 두 표현식 값이 같다면 참 ('EQual')
[ expr1 -ne expr2 ] - 두 표현식 값이 같지 않다면 참 ('Not Equal')
[ expr1 -gt expr2 ] - expr1 > expr2 이면 참 ('Greater Than')
[ expr1 -ge expr2 ] - expr1 >= expr2 이면 참 ('Greater Equal')
[ expr1 -lt expr2 ] - expr1 < expr2 이면 참 ('Less Than')
[ expr1 -le expr2 ] - expr1 <= expr2 이면 참 ('Less Equal')
[ ! expr ] - expr 이 참이면 거짓, 거짓이면 참
[ expr1 -a expr2 ] - expr1 AND expr2 의 결과 (둘다 참이면 참, 'And')
[ expr1 -o expr2 ] - expr1 OR expr2 의 결과 (둘중 하나만 참이면 참, 'Or')

 
파일 조건
[ -b FILE ] - FILE 이 블럭 디바이스 이면 참
[ -c FILE ] - FILE 이 문자 디바이스 이면 참.
[ -d FILE ] - FILE 이 디렉토리이면 참
[ -e FILE ] - FILE 이 존재하면 참
[ -f FILE ] - FILE 이 존재하고 정규파일이면 참
[ -g FILE ] - FILE 이 set-group-id 파일이면 참
[ -h FILE ] - FILE 이 심볼릭 링크이면 참
[ -L FILE ] - FILE 이 심볼릭 링크이면 참
[ -k FILE ] - FILE 이 Sticky bit 가 셋팅되어 있으면 참
[ -p FILE ] - True if file is a named pipe.
[ -r FILE ] - 현재 사용자가 읽을 수 있는 파일이면 참
[ -s FILE ] - 파일이 비어있지 않으면 참
[ -S FILE ] - 소켓 디바이스이면 참
[ -t FD ] - FD 가 열려진 터미널이면 참
[ -u FILE ] - FILE 이 set-user-id 파일이면 참
[ -w FILE ] - 현재 사용자가 쓸 수 있는 파일(writable file) 이면 참
[ -x FILE ] - 현재사용자가 실행할 수 있는 파일(Executable file) 이면 참
[ -O FILE ] - FILE 의 소유자가 현재 사용자이면 참
[ -G FILE ] - FILE 의 그룹이 현재 사용자의 그룹과 같으면 참
[ FILE1 -nt FILE2 ] - : FILE1이 FILE2 보다 새로운 파일이면 ( 최근파일이면 ) 참
[ FILE1 -ot FILE2 ] - : FILE1이 FILE2 보다 오래된 파일이면 참
[ FILE1 -ef FILE2 ] - : FILE1 이 FILE2의 하드링크 파일이면 참

[ -z 문자열 ] - 문자열의 길이가 0 이면 참
[ -n 문자열 ] - 문자열의 길이가 0 아니면 참 

'프로그래밍 > Shell Programming' 카테고리의 다른 글

AWK 활용  (0) 2011.07.11
Shell Script 정리 된 자료  (0) 2011.07.11
정수 및 문자열 비교  (0) 2011.07.11
시스템변수  (0) 2011.07.11
디스크 사용량 계산  (0) 2011.06.21
AND