[Shell Script] 쉘 스크립트 기초

 정보

  • 업무명     : 쉘 스크립트 기초

  • 작성자     : 이상호

  • 작성일     : 2019-08-28

  • 설   명      :

  • 수정이력 :

 

 내용

[특징]

  • 쉘 스크립트 입문 및 기초 지식을 배양하기 위한 스크립트가 필요하며 이 프로그램은 이러한 목적을 달성하기 위해 고안된 소프트웨어

 

[기능]

  • ShellScript (csh) 기초 지식

    • echo

    • while

    • foreach

    • case

    • if

  • Awk 명령어

  • Sed 명령어

 

[사용법]

  • 소스 코드를 실행 (csh Basic_Example.csh)

 

[사용 OS]

  • Linux

 

[사용 언어]

  • ShellScript (csh)

 

 소스 코드

#!/bin/csh
#=============================================================
# Basic
#=============================================================
echo " >> Basic: [begin] ! << "
echo 'Exam 01 :'
set a = 1
set b = (10 20 30)
echo $?a # True : 1 / false : 0
echo $#b # count
echo
set c=c/shell
set cc="cshell"
set ccc=(cshell01 cshell02 cshell03)
echo $c $cc $ccc
echo
echo $ccc
echo $ccc[*]
echo $ccc[1-3]
echo $ccc[1] $ccc[2] $ccc[3]
echo ${ccc[1]} ${ccc[2]} ${ccc[3]}
echo
echo $b[1] $b[2] $b[3]
echo ${b[1]} ${b[2]} ${b[3]}
echo
echo 'Exam 02 :'
set cf=/usr/bin/test.c
echo $cf:r # /usr/bin/test.c
echo $cf:h # /usr/bin
echo $cf:t # test.c
echo $cf:e # c
echo
echo 'Exam 03 :'
@ count = 6 # set count=6
@ count = 3 # = += -= *= /= %= ++ --
echo $count
echo
@ num = 20
@ r = $num % 6 # + - * / %
echo $num $r
echo
echo 'Exam 04 :'
@ aa = 10 # 10 ---> 2 / 0000 0000 0000 1010
@ bb = 12 # 10 ---> 2 / 0000 0000 0000 1100
@ cc = ($aa&$bb) # 0000 0000 0000 1000
@ dd = ($aa|$bb) # 0000 0000 0000 1110
@ ee = ($aa<<2) # 0000 0000 0010 1000
@ ff = (~ $aa) # 1111 1111 1111 0101 / 65525 ---> -11
echo $cc $dd $ee $ff
echo " >> Basic: [end] ! << "
#=============================================================
# echo
#=============================================================
echo " >> echo: [begin] ! << "
set a = '123'
echo $a "$a" ${a} {$a}
echo '$a' \$a
set b = ( 4 5 6 )
echo $b "$b" ${b}
echo '$b' \$b
echo " >> echo: [end] ! << "
#=============================================================
# While
#=============================================================
echo " >> While: [begin] ! << "
echo 'Exam 01 :'
set i = 0
while ( $i <= 20 )
if( ($i % 4) == 0) echo $i
# @ i++
# @ i = `expr $i + 1`
# @ i = $i + 1
# set i = `expr $i + 1`
set i = `echo 1 + $i | bc`
# unset i
end
echo
set b = `echo 1.2 +2.5 | bc`
set c = `echo 1.22 +2.51 | awk '{printf "%.2f", $1 +$2}'`
echo $b $c
echo
echo 'Exam 02 :'
set i = 2
set j = 1
while ( $j <= 5)
echo '2**'$j = $i
@ i *= 2
@ j++
end
echo
echo 'Exam 03 :'
set i = 1
while ( $i < 4 )
set j = 1
while ( $j < 4 )
echo $i $j `expr $i \* $j`
@ j++
end
echo
@ i++
end
echo " >> While: [end] ! << "
#=============================================================
# Foreach
#=============================================================
echo " >> Foreach: [begin] ! << "
echo 'Exam 01 :'
foreach i (10 20 30 40)
echo $i
end
echo
echo 'Exam 02 :'
set fcount = 0
set dcount = 0
foreach dir (*)
if ( -f $dir ) then
@ fcount++
else if ( -d $dir ) then
@ dcount++
endif
end
echo $fcount files $dcount dirs
echo
echo 'Exam 03 :'
foreach color (red yellow green blue)
echo 'one color is' "$color"
end
echo
echo " >> Foreach: [end] ! << "
#=============================================================
# Case
#=============================================================
echo " >> Case: [begin] ! << "
set reply = 1
switch ( $reply)
case "1" :
echo '1 O'
breaksw
case "2" :
case "3" :
echo '3 O'
breaksw
case "4" :
echo '4 O'
breaksw
default :
echo '1,2,3,4 X'
breaksw
endsw
echo
echo " >> Case: [end] ! << "
# awk '{for (i=1; i<=5; i++) print $i}'
#=============================================================
# If
#=============================================================
echo " >> If: [end] ! << "
# set reply = Yes
# set reply = No
set reply = Y/N
if ( $reply == "Yes") then
echo Yes O
else if ( $reply == "No" ) then
echo No O
else
echo Yes, No X
endif
echo " >> If: [end] ! << "
#============================================================='
# Awk '
#============================================================='
echo " >> Awk: [begin] ! << "
echo 'Exam 01 :'
awk '{print $1}' example.dat | sort -n -r
echo
echo 'Exam 02 :'
awk '{print $4,$1}' example.dat | sort -n
echo
echo 'Exam 03 :'
awk 'BEGIN {print "hello world"}'
echo | awk 'BEGIN {print "hello world"}'
echo
echo 'Exam 04 :'
awk 'BEGIN {print -10+1/2}'
echo `awk 'BEGIN {print -10+1/2}'`
echo | awk 'BEGIN {print -10+1/2}'
echo
echo 'Exam 05 :'
awk '{print $1, $2, $3, $4}' example.dat
echo
echo 'Exam 06 :'
awk '/./ {print $0}' example.dat
echo
echo 'Exam 07 :'
awk '{print $1$2 "-->$" $4}' example.dat
echo
echo 'Exam 08 :'
awk '{print ($1*$3), ($4-$3), ($3/$1), int($4)}' example.dat
echo
echo 'Exam 09 :'
awk 'NR>3 {print $0}' example.dat
echo
echo 'Exam 10 :'
awk 'NR<=3 {print $2}' example.dat
echo
echo 'Exam 11 :'
awk '$3>=10 {print $0}' example.dat
echo
echo 'Exam 12 :'
awk 'NR>2 && NR<5 {print $0}' example.dat
echo
echo 'Exam 13 :'
awk 'END {print $0}' example.dat
echo
echo 'Exam 14 :'
awk 'END {print NR, NF}' example.dat # NR,NF
echo
echo 'Exam 15 :'
awk 'BEGIN {print NR, NF}' example.dat
echo
echo 'Exam 16 :'
awk 'BEGIN {OFS="_"} {print $1, $2}' example.dat
echo
echo 'Exam 17 :'
awk 'BEGIN {FS=" "} {print $1, $2}' example.dat
echo
echo 'Exam 18 :'
awk 'BEGIN {x=1} {print $0, x++}' example.dat
echo
echo 'Exam 19 :'
awk 'BEGIN {x=0} {print $0, x+=10}' example.dat
echo
echo 'Exam 20 :'
awk '{if($1>2) print $0 ; else print $1}' example.dat
echo
echo 'Exam 21 :'
awk '{if($1>2) print $0 ; else if ($1>1) print $2 ; else print $1}' example.dat
echo
echo 'Exam 22 :'
awk '{printf("%4d %-20s %-5d %-7.2f \n", $1, $2, $3, $4)}' example.dat
echo
echo 'Exam 23 :'
set a = 1.dat,dat^
set b = `echo $a | awk -F'[.,^]' '{print $1, $2, $3}'`
echo $a
echo $b
echo
echo " >> Awk: [end] ! << "
#============================================================='
# Sed '
#============================================================='
echo " >> Sed: [begin] ! << "
# sed 's/\^M//g' 1.dat > 2.dat
echo " >> Sed: [end] ! << "

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com